If I understand this correctly, copy enforces the setter to create a copy of the object passed in. However, if I use it together with readonly, the
It does make sense. For instance, if you want to access a property's setter in your implementation only:
@interface MyClass : NSObject
@property (nonatomic, copy, readonly) NSData *data;
- (id)initWithData:(NSData *)data;
@end
and in the class continuation in the .m file:
@interface MyClass ()
@property (nonatomic, copy, readwrite) NSData *data;
@end
Note that the copy, readonly declaration in the public header is required in this case!