一 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 加入自动释放池,在一定时期后释放

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2015-07-27 22:52  LDoctor  阅读(146)  评论(0编辑  收藏  举报