我正在使用iOS 4,並且我有一些內存管理問題,我不明白。我會盡量簡化代碼:iOS中的內存管理 - 我找不到如何釋放內存
- (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)
{
// ...
}
}
在ButtonSliderView.m
:
- (id)initWithButtons:(NSMutableArray *)buttonArray
{
self = [super init];
if (self)
{
menuButtons = buttonArray;
}
}
我在viewDidAppear
第一線的錯誤。發佈了menuButtons
。我怎樣才能解決這個問題?哪個是正確的解決方案?
如果我改變按鈕數組聲明本:
NSMutableArray* buttonArray = [[[NSMutableArray alloc] init] autorelease];
...並刪除release
句子,它崩潰了。如果我刪除release
句子,而不是autorelease
,它可以工作,但有內存泄漏。
我使用了setter和一切工作。 爲什麼與[self setMenuButtons ...]不一樣的self.menubuttons? – Tony 2012-01-13 15:12:24
這是一樣的,但在你的代碼中,你直接分配了這樣的ivar:'menuButtons = buttonArray;' – lawicko 2012-01-13 15:41:58