读Effective Objective-C总结
1.在类的头文件中尽量少的引用其他头文件
如果在一个类A中定义了一个类B的属性,事实上他并需要知道B的实现,因此,只需在类A的m文件中加入头文件即可,这也是引用头文件的一个原则,引用头文件的时机尽量延后,那么我门需要解决编译通过的问题,前向声明,或者叫做向前声明,即在类A的h文件中声明class B即可,这也是解决交叉编译常用的手段。那么什么时候才在A的头文件引用B的头文件呢,记住一条原则,只有我门需要用到B的实现细节的时候才这么做。那么这么好处可以减少编译时间,降低类之间的耦合。
2.多用字面变量
如定义一个NSNumber *number= [NSNumber numberWithInt:2]
可以用这种方法,NSNumber *number = @2;
这是字面变量的一种,是不是感觉代码很简洁。
类似的还有很多
比如
NSArray *array = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];
NSArray *array = @[@"a", @"b", @"c"];
第二种明显清晰的多,因此我门初始化数组都建议用字面量的写法
可是此时也应该注意这种情况
NSString *a = @"a";
NSString *b = nil;
NSString *c = @"c";
NSArray *arrayA = [NSArray arrayWithObjects:a, b, c, nil];
NSArray *arrayB = @[a, b, c];
arrayWithObjects:初始化时,遇到nil便会停止,而字面辆定义的方式怎么出现程序异常。
NSDictionary *dictA = [NSDictionary dictionaryWithObjectsAndKeys:@"name", @"value1", nil];
NSDictionary *dictB = @{@"name":@"value"};
上述情况是不是dictB更直观一些
以下两种是编程中注意的