"initWithTarget" переменная дважды - PullRequest
0 голосов
/ 22 февраля 2011

У меня есть viewController, показывающий некоторый контент. В заголовочном файле я определил переменную экземпляра с именем _clientRequest, которая является объектом ClassA. ClassA занимается загрузкой Json с сервера.

Для разных пользователей в контроллере есть 1 или 2 места, использующие ClassA.

В настоящее время мои коды такие,

// 1st request. every user will do this.

_clientRequest = [ClassA alloc] initWithTarget......];

[_clientRequest download];

...

// 2nd request. some user will do this.

_clientRequest = [ClassA alloc] initWithTarget......];

[_clientRequest upload];

вы можете заметить, что _clientRequest "alloc" и "initWithTarget" дважды. В будущем запрос к серверу может быть гораздо больше в этом контроллере. Поэтому я не хочу объявлять 1 переменную для 1 запроса. Что-то не так в приведенных выше кодах? если переменная размещена и инициализирована, как насчет перераспределения и повторной инициализации? Я запускаю приложение, и сбоев не происходит.

Я новичок в obj-c. И английский не мой родной язык. Надеюсь, вы понимаете.

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

1 Ответ

0 голосов
/ 22 февраля 2011

Это приведет к утечке памяти , поскольку вы выделяете ClassA для _clientRequest, а затем выделяете другой его экземпляр, не вызывая release для первого. Когда вы распределяете данные таким способом, вы должны освободить их самостоятельно.

Вам следует позвонить [_clientRequest release]; до вашего второго звонка на [ClassA alloc]...

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