coding with objc & swift

关于iOS和OS X废弃的API你需要知道的一切

| Comments

原文: Everything You Need to Know about iOS and OS X Deprecated APIs

如你所知,已废弃(Deprecated)的API指的是那些已经过时的并且在将来某个时间最终会被移除掉的方法或类。通常,苹果在引入一个更优秀的API后就会把原来的API给废弃掉。因为,新引入的API通常意味着可以更好的发挥新硬件或操作系统的性能,或者可以使用一些在构建原有API时根本还没有的语言特性(e.g. blocks)。

每当苹果添加新方法的时候,他们都会在方法声明的后面用一个很特殊的宏来标明哪些iOS版本支持它们。例如,在UIViewController中,苹果引入了一个使用block来处理回调的方法用来展示一个模态controller,它的声明是这样的:

[译]UIApplication​Delegate launch​Options

| Comments

译自:NSHipster: UIApplication​Delegate launch​Options

AppDelegate就是iOS的垃圾场。

App的生命周期管理?URL处理?通知?CoreData?大量第三方SDK的初始化?还有那些看起来放到哪里都不合适的函数?统统都被塞到AppDelegate.m里面!

这所有之中,application:didFinishLaunchingWithOptions:是最拥挤的一个。

对于许多开发者来说,launchOptions参数如同Java main函数的String[]参数一样,被忽视了。然而,摆在眼前的事实是,launchOptions包含了许多关键性知识,涉及了app在iOS上的众多启动方式。

这个周,我们就谈谈这个UIKit里面最重要的方法,揭秘一下这个知之甚少的launchOptions参数。

实现快速枚举

| Comments

上周我们讨论了”Objective-C遍历技术的对比“。本周,我们来完成剩下部分——如何在你的程序中实现快速枚举。

基础知识

快速枚举有两个优点。一是,实现快速枚举后,你可以直接使用for/in语法遍历你的对象。二是,如果将快速枚举实现得很好,会大大提高遍历的速度。

实现快速枚举,很简单。只需要实现NSFastEnumeration协议就可以了,而且这个协议只有一个方法:

1
2
3
- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state
                                  objects:(id *)stackbuf
		                          count:(NSUInteger)len;

怎么样?看上去很简单,对吧?等一下,NSFastEnumerationState是什么啊?

[译]Core Animation 3D介绍(第2部分)

| Comments

上一篇教程中,我们已经学习了Core Animation中3D绘图的基本方法。这篇教程,我们准备深入一些,讲讲如何创建一个可交互的3D场景。我们将会创建一个类似于旋转木马的3D场景界面,用户可以通过拖拽手势来旋转界面。

可能你已经在上一篇教程中见过最终APP的样子了,但是,让我们再来看一次吧: