Зомби сообщает: сообщение отправлено на освобожденный экземпляр - PullRequest
0 голосов
/ 29 февраля 2012

Я использовал следующий код.

MainView.h:

NSString *sCopySource;
NSString *sFileSource;

// retain and copy used both for test proposes
@property (nonatomic, retain) NSString *sCopySource;
@property (nonatomic, copy) NSString *sFileSource;

MainView.m:

// Inside the first method:
sCopySource = [NSString stringWithFormat:@"%@%@", path1, filename];
sFileSource = [NSString stringWithFormat:@"%@%@", path2, filename];

// Inside the second method:
[[NSFileManager defaultManager] copyItemAtPath:sCopySource toPath:sFileSource error:&err];

И принять ошибку в последней строке кода объектами с поддержкой зомби sCopySource и sFileSource:

message sent to deallocated instance

Почему? Свойства помечены как retain и copy. Как это исправить?

Большое спасибо за помощь!

P.S. Пожалуйста, не отвечайте, чтобы использовать ratain и release методы. Они крайне неудобны.

1 Ответ

2 голосов
/ 29 февраля 2012

Вы определили свойство, но пишете непосредственно в переменную экземпляра.

Если вы хотите использовать логику сохранения / освобождения в свойстве, вам нужно использовать:

  self.sCopySource = [NSString stringWithFormat:@"%@%@", path1, filename];
  self.sFileSource = [NSString stringWithFormat:@"%@%@", path2, filename];

Таким образом, используются методы, которые выполняют копирование и сохранение.

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