Я все еще ломаю голову, изучая распределение памяти и Objective-C (мой первый запуск с Leaks был в лучшем случае неуместным). Вот текущая проблема, я надеюсь, что все могут понять это, я использовал какой-то псевдокод, но я не верю, что что-то пропустил.
У меня есть набор Row Class для некоторых вещей из базы данных, мы будем использовать это:
@interface Row : NSObject {
int rowID;
NSString *firstName;
NSString *lastName;
}
В моем классе базы данных есть функция getRow, которая выглядит примерно так:
-(Row *) getRow
{
rowPlaceholder = [[Row alloc] init];
...
rowPlaceholder.rowID = column1;
rowPlaceholder.firstName = column2;
rowPlaceholder.lastName = column3;
...
return [rowPlaceholder autorelease]; //<-----Problem is happening here
}
Теперь в моем ViewController у меня есть две важные для этой ситуации функции:
-(void) viewWillAppear:(BOOL)animated{
currentRow = [[Row alloc] init];
currentRow = getRow;
firstNamelabel.text = currentRow.firstName;
}
Вторая функция - кнопка, которая получает второе слово:
-(IBAction)btnLastName:(id)sender{
lastNamelabel.text = currentRow.lastName; //<---Crashes the program
}
Итак, как вы можете видеть, использование currentRow против вызывает сбой программы, и я не могу понять, что если я не освобождаю rowPlaceholder, программа работает нормально. На данный момент, почему currentRow заботится о данных из другой функции, поскольку она уже имеет то, что хочет (значение из getRow ()).