簡體   English   中英

NSMutableArray子類的Count方法使應用程序崩潰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM