Cocoa学习

我的Cocoa/Cocoa Touch学习笔记

在Xcode Playground中使用Framework时的一个小坑

在项目开发的过程中,Playground是一个很好的测试开发思路的地方。独立的Playground只能使用平台自带的框架,但是如果在项目中添加了Playground,它就可以使用项目包含的所有框架--无论是第三方框架还是自己开发的框架。

但是今天一不小心碰到了一个坑。最初我在一台电脑上用的好好的Playground,在另一台电脑上,签出同样的代码之后,Xcode的控制台居然一直报错,提示找不到方法。

经过一番检查之后发现两台电脑上的代码并没有任何差异,gitignore也没有ignore错任何文件。郁闷一番之后,只好请教搜索引擎了。搜索了关于如何在Playground中引入框架的文章之后,其中的一句话点醒了我:Playground运行的是64位代码。果然,看了两边的差别,就是选择的iOS模拟器不同:一边正常的是iPhone 6S Plus;另一边不正常的是iPhone 5。仔细一想,iPhone 5好像不是64位的。于是,把模拟器选择为iPhone 5S之后,一切正常了。

至此,问题解决。虽然只是个小坑,但是考虑到问题的隐蔽性,所以我还是决定简单写几句记录下来,给自己备忘,也希望能通过搜索引擎帮助遇到同样问题的人。

(全文完)

Using Swift With Cocoa and Objective-C中文版

最初其实是打算翻译"Swift Programming Language"的,而且也翻译了十几页了。但是一直三天打鱼两天晒网的,一直没翻译下去(希望我能有时间,也能有兴致继续把那本书翻译下去)。

后来因为要转一个Objective-C项目,所以又重读了一下“Using Swift with Cocoa and Objective-C”。因为觉得这本书比较短,所以就又挖了新的坑。和“Swift Programming Language”一样,最初的热情之后,中间又停了一段时间。幸好后来赶上很长的一段时间空闲,就一鼓作气把它翻译完了。这是我最近翻译的一个较大的文档,所以翻译的不太好,请见谅。不过总体上应该能读一下了。

再说说iOS的Status Bar Style

去年的博文中,我们曾经探讨过关于UINavigationController的状态栏样式(Status Bar Style)行为。当时也给出了一个较为理想的解决UINavigationController的Status Bar Style与子UIViewController不同步的问题。但是这个问题并没有结束,事实上,除了UINavigationController之外,还有很多场景下你需要使用文章中提及的Hack。比如,UITabBarController就是一个典型的例子。

iOS 9下使用openURL:

iOS 9在各方面增强了安全性,最明显的变化,除了ATS之外,那就是openURL的变化了。在iOS 9之前,应用可以使用UIApplicationopenURL:方法,打开任意自定义Scheme的链接时(比如twitter://, fb://等)--只要iOS支持。从iOS 9开始,相信很多人都见过这样的对话框:

iOS 9中的App Transport Security

从iOS 9开始,系统默认已经不允许iOS应用访问不安全的链接(包括HTTP,以及被认为不安全的HTTPS请求)。很多开发者在把iOS应用迁移到iOS 9时,碰到的第一个问题,大致就是这个问题了。

虽然跳过iOS 9的这个默认安全设定并不是一个好的实践,但有时候免不了需要访问一些不安全的地址。要一劳永逸的全局跳过ATS,可以直接在Info.plist中加入以下值: