iOS 属性的set方法 _string = string;是什么意思?
发现最近自己特别悲剧,可能是因为地基没打好,直接学习的怎么建房子,可是地基已经修订了,所以房子都是按照地基去建的承重墙啊,一些简单的隔断墙,也是地上讯息。反而是一些基础中的基础,总是被抬到台案上来。
今天算是忍不住了,比如写一个属性:
@property (nonatomic, assign) NSInteger selectedIndex;
set方法:
- (void)setSelectedIndex:(NSInteger)selectedIndex {
_selectedIndex = selextedIndex;
}
前面那个_selectedIndex还真不能保准的说一下是啥意思,这种问题,不会有面试官问我,但是我会自己问自己,因为自己哪里不行,自己心里明白,无聊的时候,还是很想搞清楚明白的。
查了一下,没有相关资料,可能是因为搜索词条不准确,但是也找到了些信息,对我有帮助。_selectedIndex是系统给我们自动生成的,只要写了@property形式的属性,这个_selectedIndex变量就会自动生成,那么赋值给他的那个值,selectedIndex我们知道,都是在给这个属性赋值的外来值,比如self.selectedIndex = 5;
这里要说一下,self.selectedIndex就是调用了selectedIndex的set方法,你调用了set方法,本身就想赋值,那么你想赋值的这个值就是5;
那么此时你可以不给系统的那个_selectedIndex赋值,但是你在出了set方法以外的地方使用selectedIndex属性,这个值就没有值。我去试一下。挺开心的,因为事实说明,确实是这样,如果你不给赋过来的值selectedIndex再传给系统为我们自动创建的_selectedIndex,那么别的地方使用,将不会有值。无论使用self.selectedIndex还是使用_selectedIndex,都没有值,当然了,Bool类型初始值1或YES,NSInteger类型初始值0,但是这个值不是你赋给过来的。
从此点意义来讲,_selectedIndex的意思就是系统给我们自动创建了一个全局的变量,方便在set方法以外去使用,如果你不给他赋值,别处使用将没有值。
其实,说实话,无论是从开发时间,还是说当前年份,我出这样的文章,真是丢人啊!算了,我就把丢人的文章发出去。