关于 NSIndexPath的一个细节

首先解释一下:
NSIndexPath 是一个对象,它用来表示一个树形的记录地址。
提到UITableView,就必须的说一说NSIndexPath。UITableView声明了一个NSIndexPath的类别,主要用 来标识当前cell的在tableView中的位置,该类别有section和row两个属性,前者标识当前cell处于第几个section中,后者代 表在该section中的第几行。该对象一般用于tableview中cell的单选,例如以下选择支付方式的代码:

//默认选中第1段第0行
NSIndexPath *defaultIndexPath = [NSIndexPath indexPathForRow:0 inSection:1];
   [self tableView:self.paymentTableView didSelectRowAtIndexPath:defaultIndexPath];

其实我主要想说的是关于NSIndexPath的属性修饰关的键字问题:
(1)用strong修饰
@property (nonatomic, strong) NSIndexPath *selIndex;
(2)用assign修饰
@property (nonatomic, assign) NSIndexPath *selIndex;
以上第二种写法会在ios8.0上崩溃,在ios9.0以上机型正常,我之前一直在ios10.0以上的机型测试(主要测试机也没有8.0的,主要是我们还有一部分用户的机型是8.0的),没有注意到这个问题。
NSIndexPath是继承NSObject的,是模型对象,要用strong来修饰,至于在ios8.0以上没有崩溃,应该是8.0以上做了适配。我犯了这个错,希望大家不要犯这样的错。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容