[英]Count method of subclass of NSMutableArray crashes app
這似乎是一個普遍的問題,但到目前為止我仍然無法從答案中找出任何答案。 我有一個iPhone應用程序,該應用程序使用NSMutableArray
的子類來存儲對象以及一些其他屬性。 子類是skhCustomArray
。 子類初始化良好,在skhCustomArray
沒有對象,然后將其分配給視圖控制器的屬性,該屬性是skhCustomArray
的指針。
prescriptionListVC* newPrescList = [[prescriptionListVC alloc] initWithNibName:@"PrescriptionList" bundle:nil];
newPrescList.curPersonPrescriptions = [personDetails objectAtIndex:0];
很好 但是,當我將由視圖控制器管理的視圖推入導航控制器堆棧時, numberOfRowsInSection
方法中的count方法會使應用程序崩潰,請參見下文。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
return [curPersonPrescriptions count];
}
是什么原因造成的? 沒有對象的有效自定義數組如何不返回有效計數? 我要去哪里錯了? 謝謝。
NSArray的子類? 您知道NSArray是一個類集群 ,因此很難進行子類化,對吧? 實際上,這充滿了危險,NSArray文檔中有一整節專門介紹了如何將其子類化 。
我敢打賭,這就是你麻煩的根源。
當您將NSMutableArray子類化時,您需要實現一些強制性方法,例如count,addObject:,insertObjectAtIndex等。這就是我們所說的類集群。
如果要向已實現的對象添加更多功能/特性,則可以編寫“類別”而不是“子類化”。
如果要對其進行子類化,則必須實現將要使用的所有那些方法,以便更好地編寫NSMutableArray的類別並擴展所需的功能並僅使用NSMutableArray對象。 這將解決您的問題,這也是向現有類中添加新行為的簡單且幾乎正確的方法。
在這種情況下,您幾乎可以肯定不需要子類NSMutableArray。 相反,創建一個新類,該類具有一個數組作為property ,以及所需的其他屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.