Повторите alloc для того же указателя - что происходит? - PullRequest
1 голос
/ 11 октября 2010

HI all,

Что произойдет, если вы повторите этот код несколько раз?

Спасибо,

Мартин

1 Ответ

5 голосов
/ 11 октября 2010

Вы не будете увеличивать счетчик сохранности - только сообщение retain делает это на выделенном объекте.Выполнение этого точного кода более одного раза фактически приведет к ошибке, поскольку вы дублируете объявление типа pointer * mypointer.Однако, если бы вы имели (например):

pointer * mypointer = [[object alloc] init];
mypointer = [[object alloc] init];

Вы бы сделали два экземпляра object, каждый на своей позиции в памяти, и вы потеряли бы свой дескриптор на первом (поскольку mypointer теперь содержит ссылку на второй экземпляр object).По сути, это утечка.

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