まあ答えはドキュメントから、単純です:
戻り値
nibファイルのトップレベルのオブジェクトを含む配列。配列 には、ファイルの所有者またはプロキシオブジェクトへの参照が含まれていません。 ファイルには、 のファイルがアーカイブされていないときにインスタンス化されたオブジェクトのみが含まれます。 のnibファイルオブジェクトが時期尚早に解放されないように、返された配列または オブジェクトを手動で保持する必要があります。
戻り値をarrayOfTableCellView
に割り当てているようです。戻り値を保持する場合は、arrayOfTableCellView
は実際にはviewControllerのプロパティです。self.arrayOfTableCellView
を使用して戻り値を割り当てる必要があります。
あなたがそれを保持していない場合は、所有していないためにリリースする必要はありません。あなたが実際にこの
NSArray *arrayOfTableCellView = [[NSBundle mainBundle] loadNibNamed:@"TableCellXyz" owner:self options:nil];
のような配列を取得するときにオブジェクトを割り当てることができませんでしたので、それでは、あなたは、そこに
[arrayOfTableCellView release];
を持っている必要はありません。
EDIT:
NSArray * arrayOfTableCellView = [[NSBundle mainBundle] loadNibNamed:@"JLUViewController" owner:self options:nil];
UITableViewCell *cellOfXyz = (UITableViewCell*) [arrayOfTableCellView objectAtIndex:0];
[arrayCellHeights insertObject:[NSNumber numberWithInt:cellOfAlerts.frame.size.height] atIndex:kIndexXyz];
上記のコードは、漏れをクラッシュしたり、発生しません。
ちょうどあなたにこれをcalarifyするため、私はちょうど期待される結果と、あなたのコードを実行しました。インストゥルメンツは漏れを報告しないので、うまくいくでしょう。
あなたはあなたが所有していないオブジェクトを解放しようとしたので、それが、EXC_BAD_ACCESSを報告し、クラッシュしてしまいますけれども、あなたが
[arrayOfTableCellView release];
追加した場合。どのようにNSArrayをローカル変数にしたのでしょうか?関数のスコープ内で使用するだけなので、プロパティである必要はないので、同じことを行う必要があります。また、arrayCellHeights
がviewcontroller内のプロパティの場合は、常にself.arrayCellHeights
を使用してアクセスしてください。
メモ:あなたはretainCountを信用すべきではありません。あなたは何が舞台裏で起こっているのか分からない。どのようなエラーが出ますか?私はそれがEXC_BAD_ACCESSだと仮定しますか? –
BTW - エラーがアプリケーションから飛び出していました。インストルメンテーションでは、私の経験では、これらのほとんどがメモリの保持/解放の矛盾であることが判明しています。場合によっては、ゾンビ。 – mobibob