2016-09-08 1 views
0

ARCの下で不正なアクセスの問題が発生しました。ここ コードである:ARCのNSArray EXC BAD ACCESS

ファイル1 Iは細胞ファイルにself.array

[self.Cell setCollectionData:self.Array]; 

FILE2

を通過メソッドを呼び出し、私は次のような方法と呼ば

- (void)setCollectionData:(NSArray *)collectionData { 
    [self.subCell setCollectionData:collectionData]; 
} 

ファイル3

は最終的に、ここで

- (void)setCollectionData:(NSArray *)collectionData { 
    self.collectionData = collectionData; 
} 

と呼ばれる方法は、collectionDataはBADアクセスエラーが発生しました。

しかし、self.cellself.subcell_cell_subcellに変更することで問題を解決しました。

私の質問は、なぜARCの下で悪いアクセスの問題が起こったのですか?

+1

の可能性のある重複した[デリゲートのカスタムsetterメソッドが呼び出される無限回]のようhttp://stackoverflow.com/questions/37615344/custom-setter-method-for-delegate-をそれを使用する必要がありますいわゆる「無限大」) – Larme

答えて

0

setterメソッドとgetter、dealloc、およびinitメソッドにはivarを使用する必要があります。あなたが疲れていた問題は、バリューセッターを通して値を設定し、その結果、無限のサイクルを起こしました。 self.collectionData =このメソッドを-(void)setCollectionData:(NSArray *)collectionDataと呼びます。何度も繰り返します。そして、あなたは(以下

-(void)setCollectionData:(NSArray *)collectionData { 
    _collectionData = collectionData; 
} 
関連する問題