Заявляю сильное свойство:ObjC: сильное свойство с NSString
@property (strong) NSString *message;
И я устанавливаю сообщение как:
self.message = [NSString stringWithFormat:@"xxxx %@",sth];
Но вылетал с сообщением:
*** -[CFString retain]: message sent to deallocated instance 0x1015ea790
Даже я меняю свойство: strong-> copy, он по-прежнему падает. Теперь я установил его с помощью:
self.message = [[NSString stringWithFormat:@"xxxx %@",sth] copy];
Но я до сих пор не могу понять, как я всегда пишу его таким же образом, в прошивке.
Кстати: код для какао, не-дуги
Update1:
1 Я добавил @synthesize message;
2 СТГ является примером, реальный код
self.message = [NSString stringWithFormat:@"xxxx %@", [[NSDate date] description]];
3 Я помню, что реализация по умолчанию для свойства strong/copy может быть следующим:
- (void)setMessage:(NSString*)newMsg
{
if (message != newMsg)
{
[newMsg retain];
[message release];
message = newMsg;
}
}
SO Я думаю, что свойство-синтез добавит копию/сохранить для меня. Вот что меня смущает!
Что такое 'sth' в примере выше? – Jason
нам нужен пример кода, который вы можете запустить, чтобы показать эту проблему ... потому что это не так, как они должны работать. –
Я не думаю, что сильное означает что-либо вне ARC ... так что просто копия должна работать ... –