标签:objective-c ios
很多时候我们可以看到在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 alloc] initWithObjects:@"1",@"2", nil]“换成“self.arr = [[NSArray alloc] initWithObjects:@"1",@"2", nil];”,如果在set语句中设置断点,整个程序是会运行到断点处的,否则则不会运行到断点处,也就是说self与_最大的区别在于能否运行set语句。
其实如果不涉及set语句的话,其实是没有什么大区别的,但很多人往往喜欢往set写点什么,如果你在set里面有特殊的设置,而且需要执行这段代码的话,最好要加上self.而不是用_。
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:objective-c ios
原文地址:http://blog.csdn.net/jie863230900/article/details/47002413