добавить в свой комментарий на ваш вопрос:
читать эту
Variable Qualifiers
Он описывает различные типы пожизненных классификаторов вы можете объявить переменные и дает примеры каждого из них.
Редактировать с соответствующими битами:
В прижизненные отборочные вы можете использовать следующие:
__strong
__weak
__unsafe_unretained
__autoreleasing
Их описания в документации, но я пойду в первый 2.
__strong
является типом по умолчанию (если вы не указали один), и это увеличит количество удержания объекта на 1 Пока есть сильный указатель, указывающий на объект, он останется в живых.
__weak
не увеличивает количество удержаний объекта и не будет поддерживать его в живых. Если нет сильных ссылок, указывающих на один и тот же объект, слабый указатель будет автоматически установлен на ноль. (__unsafe_unretained
на самом деле почти такой же, как слабый, но они остаются болтающимися, а не установлены на ноль).
Если вы создадите объект, сразу назначенный слабому указателю, он будет мгновенно освобожден, так как нет сильных ссылок на него.
Пример код из документации:
NSString * __weak string = [[NSString alloc] initWithFormat:@"First Name: %@", [self firstName]];
NSLog(@"string: %@", string);
Значение string
будет аннулировано при попытке напечатать его в этом случае.
Вы можете использовать только слабый указатель, если объект, с которым вы хотите ссылаться, уже имеет хотя бы одну сильную ссылку на него. В противном случае (новый) объект будет освобожден мгновенно.
Затем этот экземпляр получил один раз, период. Кстати, в вашем примере «старый» по-прежнему является сильным экземпляром, и по умолчанию экземпляр объекта является сильным. – ZhangChn
ОК. любой пример для слабого объекта? – tom
для того, чтобы указатель был слабым, вы должны явно объявить его таким. По умолчанию NSStrings автореализовываются, поэтому это не экземпляр слабого указателя. Если вы создадите слабый указатель, он не сохранит того, на что он указывает. Если есть только один указатель, который указывает на него, и он будет освобожден, объект будет освобожден, и слабый указатель будет свисать. – Dima