iOS中声明属性的适合self.xx与_xx的区别

参考:http://blog.csdn.net/u014783027/article/details/24408209

self.xx是访问属性的,集成并生成了setter和getter方法,如果属性的修饰符有retain,那么当使用self.xx的时候相应地属性的引用计数器生成了setter方法而进行加1操作,retaincount为2.

而_xx是访问实例变量的,只对实例变量进行声明,是对指针的赋值,而没有相应的方法。


- (void)setX:(id)theX{

    if (_x!=theX) {

        [_x release];

        _x = [theX copy];

    }

}

- (NSString *)getX{

    return _x;

}

经过@property的属性,在赋值的时候最好带上self.xx来访问。比如声明为retain的属性a,只有经过self.a=x;这样才会对x retain一次,否则不会。赋值的时候最好这样写

A *_a = [[A alloc]init];

self.a = _a;

[_a release]

经过@synthesize的属性,在释放的时候,如果@property的释放的时候要这样写:

self.a = nil

也可以这样写

[a release];

a = nil;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值