Objective C 101 (сохраняют по сравнению с, присваивается), NSString

Я использовал бы понятие 'ссылки' для всех будущих повторяющихся событий. Они динамично отображены в календаре и связываются назад с единственным ссылочным объектом. Когда события произошли, связь разорвана, и событие становится автономным экземпляром. При попытке отредактировать повторяющееся событие, тогда запрашивают, чтобы изменить все будущие объекты (т.е. изменить единственную связанную ссылку) или изменение просто, что экземпляр (в этом случае преобразовывают это в автономный экземпляр и затем вносят изменение). Последний, в корпусе, немного проблематичен, поскольку необходимо отслеживать в повторяющемся списке всех будущих событий, которые были преобразованы в единственный экземпляр. Но, это совершенно выполнимо.

Так, в сущности, имеют 2 класса событий - единственные экземпляры и повторяющиеся события.

54
задан swiftBoy 1 April 2016 в 09:31
поделиться

2 ответа

Без keep нет гарантии, что NSString * , с которым вы устанавливаете имя , будет жить дольше, чем сам оператор присваивания.

12
ответ дан 7 November 2019 в 07:48
поделиться

В Objective-C нет такой вещи, как «область действия объекта». Правила области не имеют ничего общего со временем жизни объекта - счетчик сохранения - это все.

Обычно вам нужно заявить о праве собственности на переменные вашего экземпляра. См. правила управления памятью Objective-C . С свойством сохранить ваш установщик свойств заявляет о праве собственности на новое значение и отказывается от владения старым. С помощью свойства assign окружающий код должен делать это, что не менее беспорядочно с точки зрения ответственности и разделения ответственности. Причина, по которой вы должны использовать свойство assign , заключается в том, что вы не можете сохранить значение (например, не объектные типы, такие как BOOL или NSRect), или при его сохранении это может вызвать нежелательные побочные эффекты.

Между прочим, в случае NSString правильным типом свойства обычно является копия . Таким образом, он не может измениться из-под вас, если кто-то передаст NSMutableString (что верно - это разновидность NSString).

68
ответ дан 7 November 2019 в 07:48
поделиться