IOS study - XinliWang/iOS GitHub Wiki
####1.类簇
NsNumber是一个类簇的抽象父类。
number包含了Char, UnsignedChar, Short, UnsignedShot, Int, UnsignedInt, LongInt
####2.命名规则和习惯
*由框架提供的类名,都用框架名的两个缩写大写字母作为前缀,比如NSArray
*由程序员建立的类和方法,需要将下划线作为前缀。比如"_SomePrivateClass"
*全局变量、函数名、类名是不可以重复的。
*一个类中的方法名可以与其它类中的方法重名。
*一个类中的实例变量可以与其它类中的实例变量重名。
*一个类别名(class category)可以和另一个类别名相同。
*一个实例方法(instance method)和一个类方法(class method)可以有相同的名称。
*一个协议(protocol)的名字可以和其它类、类别相同。
*一个方法可以和一个实例变量(instance variable)重名。
####4.初始化Unichar(疑问)
unichar a[10];
NSString *aString = @"一二三四五六七八九十";
for (int i = 0; i < 10; i++)
a[i] = [aString characterAtIndex:i];
####5. %@ %@中的@代表一个对象
NSObject *obj = [anObject aMethod];
NSLog(@"The method returned:%@",obj);
用@”...”结构创建的静态字符串对象永远是不可更改的。
####6.retain
在一个代码块中,如果alloc或者retain或者copy过一个对象,粗略地将,这个代码块就有义务去release或者autorelease这个对象,这是最好的平衡retain/release的方式。
如果你接收了一个对象,这个对象应该在接收到其他消息或者autorelease时间到之前保持有效。所以你通常期望这个对象应该在这个方法里依然有效,甚至你可以将这个对象当作这个方法的返回值来返回的时候,这个对象依然有效。
如果你想长期使用一个接收来的对象,你需要手动retain它。
// 'status' 对象这个时候还在autorelease pool中
NSString *status = [foo getStatus];
NSLog(status);
// status将会被autorelease pool释放掉
return;
// currentStatus 是一个实例变量,我们不想以后某个时间被autorelease pool给释放掉,我们需要长期存储这个对象,所以我们必须自己动手retain这个对象
currentStatus = [foo getStatus];
[currentStatus retain];