私はiOS 4を使用していますが、わからないメモリ管理上の問題があります。私はviewDidAppear
の最初の行でエラーが発生しているiOSでのメモリ管理 - メモリを解放する方法がわかりません
- (id)initWithButtons:(NSMutableArray *)buttonArray
{
self = [super init];
if (self)
{
menuButtons = buttonArray;
}
}
:ButtonSliderView.m
で
- (void)viewDidLoad
{
NSMutableArray *buttonArray = [[NSMutableArray alloc] init];
for (int i = 0; i < [othercollection count]; i++)
{
// Push objects to button array
}
self.buttonSliderView = [[ButtonSliderView alloc] initWithButtons:
buttonArray];
[buttonArray release];
[self.view addSubview:self.buttonSliderView];
[buttonSliderView release];
}
- (void) viewDidAppear
{
if ([buttonSliderView.menuButtons count] > 0)
{
// ...
}
}
:私は、コードを単純化しようとします。 menuButtons
がリリースされました。これをどうすれば解決できますか?正しい解決策はどれですか?
私はこれにボタン配列の宣言を変更した場合:
NSMutableArray* buttonArray = [[[NSMutableArray alloc] init] autorelease];
...とrelease
文を削除し、それはあまりにもクラッシュします。 release
文を削除してautorelease
を指定しなかった場合は動作しますが、メモリリークがあります。
私はセッターを使い、すべてが機能しました。 [self setMenuButtons ...]と同じself.menbuttonsがないのはなぜですか? – Tony
これは同じですが、あなたのコードでは次のようにivarを直接割り当てました: 'menuButtons = buttonArray;' – lawicko