关于self.与_的区别

很多时候我们可以看到在xcode的.m开发文档中有self.aa与_aa字段,一直不太明白这其中的区别,和相关的用法,知道写一个东西,调bug的时候顿悟,现在记录下来,仅供参考!


很多时候我们这样写我们的Objective-c代码

//.h文件部分

@interface demo_selfAnd_

@end

//.m文件部分

@implementation demo_selfAnd_

@end


举个例子

@interface ViewController ()

@property(nonatomic,retain)NSArray *arr;

@end


@implementation ViewController

- (void)viewDidLoad {

    [super viewDidLoad];

    _arr = [[NSArray alloc] initWithObjects:@"1",@"2", nil];

}

- (void)setArr:(NSArray *)arr{

    if (arr) {

        _arr = [[NSArray alloc] initWithArray:arr];

    }else{

        

    }

}

@end


我有如上的代码。

好吧,你首先要知道- (void)setArr:(NSArray *)arr的作用(不知道请谷歌)

如果我只是如上的写上面的代码,那么- (void)setArr:(NSArray *)arr是不会运行的,

但如果我们把”_arr = [[NSArray allocinitWithObjects:@"1",@"2"nil]“换成self.arr = [[NSArray alloc] initWithObjects:@"1",@"2", nil];”,如果在set语句中设置断点,整个程序是会运行到断点处的,否则则不会运行到断点处,也就是说self与_最大的区别在于能否运行set语句。


其实如果不涉及set语句的话,其实是没有什么大区别的,但很多人往往喜欢往set写点什么,如果你在set里面有特殊的设置,而且需要执行这段代码的话,最好要加上self.而不是用_。












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值