Повторюсь, это зависит от контекста. В ситуации без ARC:
@property (nonatomic, copy) NSMutableArray *myArray
@property (nonatomic, copy) NSString *myString
@property (nonatomic, retain) UIColor *myColor
//Note the change to an int rather than a pointer to an int
@property (nonatomic, assign) int myInt
//Note the change to an int rather than a pointer to an int
@property (nonatomic, assign) BOOL myBOOL
Копия на myArray предназначена для предотвращения изменения другим «владельцем» установленного вами объекта. В проекте ARC все немного меняется:
@property (nonatomic, copy) NSMutableArray *myArray
@property (nonatomic, copy) NSString *myString
@property (nonatomic, strong) UIColor *myColor
//Note the change to an int rather than a pointer to an int
@property (nonatomic, assign) int myInt
//Note the change to an int rather than a pointer to an int
@property (nonatomic, assign) BOOL myBOOL
Изменение в первую очередь касается myColor в вашей ситуации. Вы не будете использовать retain
, так как не будете напрямую управлять подсчетом ссылок. Ключевое слово strong
- это способ подтверждения "владения" недвижимостью, аналогичный retain
. Также предоставляется дополнительное ключевое слово weak
, которое обычно используется вместо присваивания для типов объектов. Типичный пример Apple weak
- для делегатов. Я бы порекомендовал пройти Переход к примечаниям к выпуску ARC в дополнение к Руководство по управлению памятью раз или два, так как здесь больше нюансов, чем можно легко описать в статье SO.