Управление памятью в Objective-C, свойство возвращает объект objc-c с счетом удержания +1, UIGraphicsBeginImageContextWithOptions - PullRequest
0 голосов
/ 25 октября 2011

Я запустил анализатор, и я не уверен, как работает пара функций управления памятью. У меня есть свойство (у него нет пользовательских сеттеров или геттеров):

@property (nonatomic, retain) NSMutableArray *myArray;

Тогда я попытаюсь использовать его позже:

if ([[MyClass sharedDelegate].myArray containsObject:"test"])

В нем говорится, что «свойство возвращает объект Objective-C с числом сохранений +1»

Где sharedDelegate определяется как:

+(MyApp*)sharedDelegate
{
    return (MyApp*)[[UIApplication sharedApplication] delegate];
}

Я не понимаю этого, так как не вижу, где находится удержание? Я думал, что использование свойства таким способом - это использование метода get, который просто возвращает значение myArray. Так где же утечка памяти?

Затем указывает на

UIGraphicsBeginImagecontextWithOptions(container.bounds.size, YES, 1.0);

Объект просочился: на выделенный объект не ссылаются позже в этом пути выполнения и имеет счет сохранения + 1

Я тоже не понимаю этого, или как это связано с первой утечкой памяти. Они кажутся не связанными.

Ответы [ 2 ]

0 голосов
/ 25 октября 2011

Что такое геттер для myArray?@synthesize, или custom?

Я думаю, что ошибка также может быть в sharedDelegate.Не сохраняйте при возврате синглтона.

Второй кажется не связанным.Может быть, вы не позвонили UIGraphicsEndImageContext.Если вы вызываете это в какой-то другой функции, это может быть хорошоКомпилятор ожидает нормальную схему вызова этих двух функций в одной и той же функции, но это не требуется.

0 голосов
/ 25 октября 2011

Вы пометили свойство для возврата сохраненной ссылки.

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