NSURLComponents CFStringTransform
有时候苹果会悄悄的添加一些有趣的类.在iOS7中,苹果添加了NSURLComponents
,但是没有一个类参考文档.在“What’s New in iOS 7”中的iOS 7 release notes(iOS7发行说明)部分中有提到,但是你还是要去阅读 NSURL.h
的文档.
有时候苹果会悄悄的添加一些有趣的类.在iOS7中,苹果添加了NSURLComponents
,但是没有一个类参考文档.在“What’s New in iOS 7”中的iOS 7 release notes(iOS7发行说明)部分中有提到,但是你还是要去阅读 NSURL.h
的文档.
最常见最优秀的Cocoa集合是NSArray
,NSSet
和NSDictionary
.但是在某些情况时是不适合的.NSArray
和NSSet
会对里面的对象retain.NSDictionary
不仅会retain存入的值,而且还会copy他的key.这些行为通常正是你想要的,但是对于某些问题来说,这样对你是不利的.幸运的是,其他的集合已经在iOS6中生效了:NSPointerArray
,NSHashTable
和NSMapTable
.它们在苹果的文档内被统称为指针集合类,并且有时使用NSPointerFunctions类来配置.
Associative references(关联引用)允许你去附加key-value(键值对)数据到任意的对象上.这个功能能让你做很多的事情,但是一个共同的用途就是可以让category添加数据到property.
category允许你在运行时添加一些方法到一个现有的类中.任何类,甚至苹果提供的Cocoa类,都可以用category来扩展.并且这些新添加的方法对类中的所有实例都是有效的.声明一个类别是非常容易的.看上去就像声明一个类接口声明后面加上一个括号,括号内写上类别的名字. 例如:
@interface NSMutableString (PTLCapitalize)
- (void)ptl_capitalize;
@end
PTLCapitalize
就是类别的名字.注意,这里没有实例变量的声明.类别是不能声明实例变量的,也不可以合成实例变量的属性(其实都是一回事).
在文章的开头,先看下Objective-C runtime 内关于objc的几个基本类型
贯穿整个iOS,命名约定始终都是非常重要的.在下面的部分你可以学习到如何正确的命名各种各样的名目,并且知道为什么要这样命名的原因.