iphone: передача объектов между функциями - PullRequest
0 голосов
/ 22 декабря 2009

мой код такой

- (id)getViewControllerForManagedObject:(QIManagedObject *)object {

DataTableViewControllerReports *nextControllerReports = [[[DataTableViewControllerReports alloc] initWithNibName:@"ReportsScreenXIB" bundle:nil] autorelease];

nextControllerReports.objectStack = [self.objectStack arrayByAddingObject:object];
return nextControllerReports;}

Я возвращаю объект автоматического освобождения функции, объявленной в родительском классе. но в этот момент приложение м вылетает. Я запустил приложение в режиме отладки и обнаружил, что после возврата из этой функции отображается «Objc_Msgsend». Означает, что объект nextcontrollerReports освобождается. Поэтому любой может помочь мне передать этот объект другой функции.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 22 декабря 2009

добавьте retain к возвращенному объекту сразу после вызова этой функции и посмотрите ..

0 голосов
/ 22 декабря 2009

Вы не должны устанавливать nextControllerReports на автоматическое освобождение, потому что это приведет к тому, что среда выполнения восстановит память как можно скорее.

Тогда вы получите предупреждение, потому что вызывающая сторона этого метода сохранит выделение памяти для возвращаемого объекта, и это не понятно из названия вашего метода. Чтобы удалить его, вы должны переименовать метод во что-то, что начинается с copy | alloc | init.

Чтобы избежать утечек, вызывающий метод должен по возможности освобождать объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...