NSURLComponents CFStringTransform

有时候苹果会悄悄的添加一些有趣的类.在iOS7中,苹果添加了NSURLComponents,但是没有一个类参考文档.在“What’s New in iOS 7”中的iOS 7 release notes(iOS7发行说明)部分中有提到,但是你还是要去阅读 NSURL.h的文档.

Weak Collections & NSCache

最常见最优秀的Cocoa集合是NSArray,NSSetNSDictionary.但是在某些情况时是不适合的.NSArrayNSSet会对里面的对象retain.NSDictionary不仅会retain存入的值,而且还会copy他的key.这些行为通常正是你想要的,但是对于某些问题来说,这样对你是不利的.幸运的是,其他的集合已经在iOS6中生效了:NSPointerArray,NSHashTableNSMapTable.它们在苹果的文档内被统称为指针集合类,并且有时使用NSPointerFunctions类来配置.

Associative References

Associative references(关联引用)允许你去附加key-value(键值对)数据到任意的对象上.这个功能能让你做很多的事情,但是一个共同的用途就是可以让category添加数据到property.

Categories(类别)

category允许你在运行时添加一些方法到一个现有的类中.任何类,甚至苹果提供的Cocoa类,都可以用category来扩展.并且这些新添加的方法对类中的所有实例都是有效的.声明一个类别是非常容易的.看上去就像声明一个类接口声明后面加上一个括号,括号内写上类别的名字. 例如:

@interface NSMutableString (PTLCapitalize)
   - (void)ptl_capitalize;
   @end

PTLCapitalize就是类别的名字.注意,这里没有实例变量的声明.类别是不能声明实例变量的,也不可以合成实例变量的属性(其实都是一回事).

Property 和 Ivar 的最佳实践

在文章的开头,先看下Objective-C runtime 内关于objc的几个基本类型

iOS命名的最佳实践

贯穿整个iOS,命名约定始终都是非常重要的.在下面的部分你可以学习到如何正确的命名各种各样的名目,并且知道为什么要这样命名的原因.