ps:看样子 这里是很久前在其他地方搞的...
点语法的使用:不建议使用点语法调用方法,只用来访问属性。这样做是为了防止代码可读性问题。
例:(正确)使用点语法访问属性
NSString *oldName = object.name;
object.name = @"cai";
(错误)不要使用点语法调用方法
NSArray *array = @[@"data"];
NSUInteger number = array.count;
nil检查
因为在Objective-C中向nil发送命令是不会抛出异常或者导致崩溃的,只是完全的“什么都不干”,所以,只在程序中使用nil来做逻辑上的检查。另外,不要使用诸如nil == Object 或者 Object == nil的形式来判断
例:
//正确,直接判断
if (!objc) {
...
}
//错误,不用使用nil == objc的形式
if (nil == objc) {
...
}
建议使用语法糖(好像也叫快速创建)
使用语法糖能使代码更简洁
例:
NSNumber *test = @66;
BOOL的使用
BOOL在Objective-C中被定义为signed char类型,这意味着一个BOOL类型的变量不仅仅可以表示YES(1)和NO(0)两个值,所以永远不要将BOOL类型变量直接和YES比较:
//错误,无法确定great的值是否是YES(1),不要将BOOL值直接与YES比较
BOOL great = [foo isGreat];
if (great == YES)
//…be great!
//正确
BOOL great = [foo isGreat];
if (great)
//… be great!
同样地,也不要将其它类型的值作为BOOL来返回,这种情况下,BOOL变量只会取值的最后一个字节来赋值,这样很可能会取到0(NO)。但是,一些逻辑操作符比如&& || !的返回是可以直接赋给BOOL的:
//错误,不要将其它类型转化为BOOL返回
- (BOOL)isBold {
return [selffontTraits] & NSFontBoldTrait;
}
- (BOOL)isValid {
return [selfstringValue];
}
//正确
- (BOOL)isBold {
return ([selffontTraits] & NSFontBoldTrait) ? YES : NO;
}
//正确,逻辑操作符可以直接转化为BOOL
- (BOOL)isValid {
return [selfstringValue] != nil;
}
- (BOOL)isEnabled {
return [selfisValid] && [self isBold];
}
不要使用new方法:
尽管很多时候能用new代替alloc/init方法,但这可能会导致调试内存时,出现不可预料的问题。Cocoa的规范就是使用alloc init方法,使用new会让一些读者困惑。