首先解釋一下:
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以上做了適配。我犯了這個錯,希望大家不要犯這樣的錯。