一 oc基本数据类型
1,id类型指向object-c对象的指针
可以指向任意的对象类型,可以将任意消息传递给id,id不支持该消息时,会返回运行时异常,"unrecognized selector send to instance xxx"消息;
常用于表示类的委托属性,例:@property id<协议名> delegate;
2,SEL类型,用来定义方法的关键字
oc对象可以接受任何消息,但不一定能响应,通过方法:respondsToSelector()来判断对象是否能响应某个消息,保护代码,
- (BOOL)respondsToSelector:(SEL)aSelector; ->NSObject类
3,nil,NULL,NSNULL --空值
nil用于对对象赋值,NULL给任何指针赋值,NSNULL用于集合操作
nil对象可以接受消息,返回0值,不引起异常
4.基本数据
整数类型 int 4字节 , short 2byte , long 32位机4byte 64位机8比特 , long long 8字节,
浮点型 单精度float 4字节 , 双精度double 8字节
float a=6.7;
NSLog(@"%f",a); --->6.700000
NSLog(@"%.6f",a); ----> 6.700000
NSLog(@"%.10f",a); ----->6.6999998093
布尔类型 bool 1字节
BOOL 4字节
字符类型 char
枚举类型
二 宏定义
#define 定义函数,数字,字符串
静态变量static int i=0;//局部静态变量作用在方法体内,等同于全局变量
#pragma mark -用于分隔代码块
#pragma mark NETWORK API
三 内存管理
内存管理的原则:谁创建 谁释放
1.手动内存管理MRR manual retain release
2.自动引用计数ARC Automatic Reference Counting
常见内存错误:1.内存泄露,对象没有在使用结束释放掉,造成常驻内存的现象;2.过度释放,对象还没有使用就被释放了,提前释放造成系统崩溃.
能让引用计数增加的操作:
1.alloc new retain copy 使对象的引用计数+1;//需要程序员自己手动release释放
2.采用类方法创建对象,会使引用计数+1,由系统方法内部创建,由系统自己释放
3.父控件加载子控件时,[self addsubView:xxx]让对象的引用计数+1
4.对属性进行赋值时,会让对象的引用计数+1;
5.向数组中添加对象,引用计数+1,删除数组中的对象引用计数-1;
能让引用计数减少的方法:
release autorelease 使对象的引用计数-1;
当引用计数为0时,自动调用对象类的dealloc方法,对象占用的内存被收回
全局的对象在本类的dealloc方法中释放
静态方法创建的对象,声明为全局后,对象会被系统自动释放,需保留一次引用计数,否则在别的方法中再使用该对象时会崩溃
在方法体内创建的对象,可使用autorelease 加入自动释放池,在一定时期后释放