私はテーブルビューコントローラを持っており、その初期化中にテーブルのデータを表示するためにcellForRowAtIndexPath
メソッドで使用されるNSArrayプロパティを設定しました。保持されたプロパティを呼び出すと、TableViewControllerがクラッシュしますか?
しかし、私が行をタッチすると、これを保持しているNSArrayプロパティをEXC_BAD_ACCESSと呼ぶと!
FYIプロパティは、以下のように定義され、カスタムゲッター機能使用されています
@property (nonatomic,retain) NSArray *dataList;
と.mファイル内:
@synthesize dataList;
- (NSArray *)dataList
{
if (!dataList)
{
NSString *p = [kind lowercaseString];
NSString *s = [[NSBundle mainBundle] pathForResource:p ofType:@"txt"];
NSLog(@"%@",s);
NSData *dataRep = [NSData dataWithContentsOfFile:s];
NSPropertyListFormat format;
dataList = [NSPropertyListSerialization propertyListFromData: dataRep
mutabilityOption: NSPropertyListImmutable
format: &format
errorDescription: nil];
if (dataList.count == 0)
NSLog(@"Fetch failed!");
}
return dataList;
}
任意の提案を?
を?あなたのカスタムゲッター機能など? – GendoIkari
ここにコードを投稿する必要があります。オーバーライドされたgetter/setterを持っているか、配列の保持カウントを他の場所で誤って処理しています。 –
代わりにコピープロパティにすることもできます。これは、プロパティにNSMutableArrayを代入して配列を突然変異させると、配列のプロパティのバージョンが変更されないことを意味します。代わりに非可変NSArrayを代入すると、コピーはretainのように動作します。 –