每一个不曾起舞的日子都是对生命的辜负。
经典命名法则:
命名规则
运算符
一元负号运算符具有更高的优先级,但一元正号运算符和算术运算符的优先级相同
模运算符的优先级与乘法和除法的优先级相等
加法运算符比赋值运算符优先级高,除了逗号运算符其他都比赋值运算符优先级高
@synthesize 和 @property
@synthesize x;
或者@synthesize x = _x;
编译器生成的实例变量就是你在@interface中声明的实例变量。a
,而直接在代码部分声明synthesize x = a;
那么编译器会给你生成一个a
的实例变量,而且只会只能访问实例变量a
不能访问_a
也不能访问x
和_x
变量初始值
self = [super init]
define
const
修饰的变量不可变
定义的常量在程序运行中会有一份拷贝
编译器通常不为普通const常量分配存储空间,而是将它们存储在符号表中,使得它成为一个编译期间的常量,没有了存储与内存的操作,使得它效率高。
const定义的右边是不可改变的,也就是说const修饰的是它右边的部分。
|
|
extern
static
枚举类型
enum direction {up, down, left = 10, right};
,因为up位于首位,所以编译器就给up赋值为0, down为1,right为11typedef
|
|
typedef enum
分类(Category)
扩展(Extension)
成员变量与属性
协议(protocol)
代理(delegate)
·#import””和#import<>
预编译语句
#define
|
|
|
|
- `#undef`消除定义,即之后就不能再调用这个消除后的变量
Set
内存管理
自动垃圾收集
手动引用计数和自动释放池
自动引用计数(ARC)
赋值
Copy
浅复制
深复制
其他类要实现copy必须实现
可以通过归档来实现深复制
|
|
属性
[newCount retain];
即引用计数旧对象-1,retain新对象+1,再指向新对象copyWithZone
方法原子性
nil、Nil、NULL、NSNull
NSObject *obj = nil;
Class someClass = Nil;
int *x = NULL;
+(NSNull *)null;
@property