首先解释一下:
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以上做了适配。我犯了这个错,希望大家不要犯这样的错。