Cocoa学习

我的Cocoa/Cocoa Touch学习笔记

让Alamofire使用自签名证书

Alamofire每次大版本号更新,都会引入大量API更新。3.x版更新用Swift 2.0的新特征更新了很多接口。网上很多关于Alamofire如何使用自定义SSL证书的文章都已经过时。经过一番搜索,最后找到了一个靠谱的解决方案。

禁用OS X Yosemite上的Core Storage

不管你发现没有,OS X Yosemite已经悄悄的把你的磁盘转成Core Storage了。做过Fusion Drive的同学一定知道Core Storage是实现Fusion Drive的核心技术。不过对于只有一个磁盘的MacBook来说,我有点不太理解苹果强制启用CoreStorage的理由。

为什么要关闭Core Storage

当然,如果你在用Fusion Drive,那么Core Storage是你的好朋友。如果你正在使用Fusion Drive,请无视本文!!!

不过对于单磁盘的Mac来说,Core Storage有如下问题:

  1. 按住Option开机,Recovery分区不见了;(当然,你可以按住Command + R启动,进Recovery。)
  2. 无法随意调整Mac的分区了;
  3. 磁盘实用工具尚未对Core Storage提供完整支持;
  4. Windows下无法挂载Core Storage分区,即使你装过BootCamp驱动;
  5. 磁盘性能下降?(这个可能是个例。我升级OS X 10.10.2之后,明显感到系统卡顿,关闭Core Storage之后恢复正常。)

Xcode 6 Color Themes (颜色主题) 的路径

搜索引擎有时候并不能给你最好的结果,于是便有了这篇文章。今天为了找Xcode 6的配色主题路径,我搜了好久,结果找到的都是过时的信息。经过摸索终于找到正确答案,现贴在这里,希望能冲刷一下搜索引擎的旧信息。

Xcode 6的颜色主题路径位于:

1
~/Library/Developer/Xcode/UserData/FontAndColorThemes

如果你下载了别人提供的漂亮的代码高亮颜色主题,比如这个,记得放到上面那个路径下。

(全文完)

[更新]把Swift用作脚本语言

Swift是Apple开发的很酷的新语言。在看WWDC介绍Swift的时候,看到它有一个REPL交互界面,我当时就在想,Swift难道能像脚本语言一样用?如果可以的话,那岂不是一门非常有潜力的脚本语言了(当然,就跨平台而言,Swift完败)?性能优异,语法现代,REPL,还有Playground,简直无敌了!所以下载完Xcode 6 beta 1,我就试了一个简单的脚本:

1
2
#!/usr/bin/env xcrun swift
println("Hello Swift.")

如果装过命令行工具包,可以直接这么写:

1
2
#!/usr/bin/env swift
println("Hello Swift.")

保存为任意文件名,比如:hello.swift。然后在命令行执行:

1
2
chmod +x hello.swift
./hello.swift

执行./hello.swift的时候,CPU飚了一下,终端光标停顿了一下之后,打印出了Hello Swift.。然后我就发现和脚本的同级目录下多了一个可执行文件,名为hello。敢情执行这段“脚本”实际上是编译了脚本,然后再执行编译的结果啊。当时我没有深究,只想着照这样,用Swift写脚本是不行了。然后我就把这件事丢下了。

UINavigationController和View Controller-based状态栏风格

从iOS 7开始, UIViewController有了一个新的方法:- preferredStatusBarStyle,可以让用户指定状态栏风格。但问题是这个方法只有在ViewController不包含在UINavigationController中时才起作用。大部分情况下,ViewController不会单独使用,一般都会嵌套在UINavigationController中的。因为不知道这一点,所以在很长一段时间内,我都很困惑,明明我已经在我的ViewController里写了- preferredStatusBarStyle, 却一点都不起作用。

知道了原因,接下来就简单了。我们可以写一个UINavigationController的扩展,覆盖其默认实现,返回最上面的ViewControllerpreferredStatusBarStyle

代码如下:

用ImageView和Layer实现图像的圆角显示

昨天写过一个博文,介绍了创建圆角矩形图像的方法。现在,我再介绍一个“显示”圆角图像的方法。

这种方法利用的是UIImageViewlayer的属性,实现把图像显示成圆角,而无需对图像本身进行处理。在开发中,大部分情况下,我们只需要“显示”圆角,而不是“得到”圆角图像。不是么。好了,先看代码: