父类有一个私有属性 NSString *searchText;
子类也有一个属性 NSString *searchText;
父类有这么一个方法:
- (void)searchRequestWithText:(NSString *)searchText {
_searchText = searchText;
[self requestData];
}
而requestData方法中 调用了self.searchText
此时的self.searchText是没有被赋值的
调试可以看到 里面有两个变量
子类调用父类的方法的时候
如果父类使用的是_searchText 这样的方法
获取到的不是子类的对应属性的值,而是父类里的对应属性的值
而如果是self.searchText 获取到的是子类里对应属性的值
原理是self. 调用了对应的getter setter方法,这个方法是可以被子类覆盖的
所以以后写代码两种写法要尽量统一(不过如果需要重写setter方法 有些地方肯定要用到self.的 父类重写的getter setter方法也会被子类覆盖 即使是私有属性 使用的时候需要注意)