OC学习笔记

1. 类的动态方法里,self表示当前对象

- (void) test {

int age = self.age;

}

 类的静态方法里,self表示当前类名

- (void) test {

[self alloc];

}

2. 直接将方法写在.m文件里,没有在.h文件中声明,属于私有方法,只能在类内部访问

3. @property  声明setter和getter方法,写在头文件里

@property int age

    @synthesize 实现setter和getter方法,写在.m文件里

@synthesize age    :@synthesize默认回去访问跟age同名的变量,如果没有该变量,则在内部生成一个私有同名变量

        @synthesize age = _age :getter和setter方法关联的是成员变量_age

注:xcode4.5以后,不用的.m文件里写@synthesize,但在头文件里用@property声明的变量,会自动创建一个带下划线的私有同名变量

       如果自己实现了getter和setter方法,则xcode不会自动生成@synthesize,也不会自动创建同名变量


4. NSLog(@"count is %zi",[stu retainCount]) :zi代表无符号整形


5.Student * stu =[ [ [Student alloc] init] autorelease] :自动释放对象

6.析构函数 

   - (void)dealloc{

[super dealloc];

}

7. 私有方法是将函数写在.m文件里面

8. 方法注释

单个注释: @pragma mark ...

归类注释: @pragma mark - ...

9. setter方法内存管理

- (void) setBook:(Book*)book{

if(_book != book){

[_book release];

_book = [book retain];

}

}

10. setter自动内存管理特性 ,retain参数

@property(retain) Book *book  :加上(retain)属性,系统自动做setter内存管理,如同的.m文件里加上第9点的方法

即是:在settter方法中,自动release旧值,retain新值

注:继承了NSObject类的对象才需要做内存管理,才需要加参数retain,基本数据类型加retain会报错


11 @property(assgin) int age  

默认值即是assign,写了等于没写,意思就是自动生成的setter方法直接赋值与_age成员变量,不做内存管理


12 @property参数分三类

(1)读写属性:readwrite/readonly   //readonly代表只会生成getter方法,默认readwrite

(2)setter处理:assign/retain/copy//默认assign

(3)原子性:atomic/nonatomic//atomic代表线程安全,nonatomic非线程安全默认atomic

13 改变默认生成的getter方法名

@property (nonatomic, getter = isRich) BOOL //将getter方法名改为isRich

14 .自动释放池

Book *book = [ [ [Book alloc ] init ] autorelease ]  // 一般而言,通过类的静态方法创建的类实例都不需要我们做内存管理

15. 分类 category

可以给任何类拓展方法

@interface NSString (Test)   //Test为分类名称

+ (NSString*) json();

@end


@implemetation NSString (Test)

+ (NSString*) json(){

return @“ { ’name’ : ‘ LiLi’ , ‘ no ‘ : ‘ 10 ’  } “;

}

@end

使用:

#import “NSString+Test.h”

//NSString *str = [ [ [ NSString alloc] init ] autorelease ] ;

[NSString json];

16. protocol 相当于接口,声明的借口方法,继承的类不需要全部都实现

注意:如果要求必须实现,则在方法前面加上@required

@protocal Study<NSObject>

@required //以下方法必须实现

- (void)test;

- (void)test1;

@optional //可选,可以实现,也可以不实现

-(void)test2;

@end

17. 判断某个类是否实现了某接口的方法

BOOL b = [_delegate respondsToSelector:@selector(onClick:) ];   //判断_delegate是否实现了onClick:方法

18. 判断是否遵守了某个协议

BOOL b = [stu comformsToProtocol: @protocol(Study)]; //判断stu是否遵守了Study协议

19. 外部直接访问成员变了用 “->”

stu->height = 19;









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值