effect_objectC
第三条
尽量使用@class先告诉编译器,再在.m文件中导入@import 某个文件
第四条
多用字面量语法,少用与之等价的方法
例子:
NSNumber*number=[NSNumbernumberWithInt:2];// error
NSNumber*number2=@2;// right
intx=2;
floaty=5.23;
NSNumber*number3=@(x*y);
数组字面值
格式:
需要用[]来初始化
NSArray*array=[[NSArrayalloc]initWithObjects:@"dog",@"cat",@"mouse",nil];
NSArray*array1=@[@"dog",@"cat",@"mouse”];
注意的是:创建字面值数组时,如果括号中对象有nil的对象,则会抛出异常。如果是第一种方法则不回,但是会出现一个更大的问题
idobject1=@"dog";
idobject2=nil;
idobject3=@"cat";
NSArray*array=[[NSArrayalloc]initWithObjects:object1,object2,object3,nil];/**只有一个dog,因为object2是nil,结束了数组的创建*/
NSArray*array1=@[object1,object2,object3];
//抛出异常
总结: 所以使用字面值的方法创建会更安全
字面值创建字典
格式:
字典需要用{}来初始化字面值
NSDictionary*dict=[[NSDictionaryalloc]initWithObjectsAndKeys:@"Matt",@"fistname",[NSNumbernumberWithInt:28],@"age",
nil];
NSDictionary*dict2=@{@"firstname":@"Matt",@"age":@28};
总结:局限性:使用字面值创建出来的字符串,数组,字典对象都是不可变的。想要变成可变版本,需要复制一份。
NSMutableArray*mutabbleArray=[@[@1,@2,@3]mutableCopy];
要点:
1.应该通过下标操作来访问数组的下标或字典中的键所对应的元素
2.使用字面值创建数组或者字典时,若值有Nil时,会抛出异常。
第四条
使用常量来代替#define 宏
在实现文件中使用static const来定义”只在编译单元内可见的常量"