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
, there won't be a setter. So is my assumption correct, that combining @property (copy, readonly)
doesn't make any sense or am I missing something?
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!
According to Apple's documentation (which I've linked here for you):
copy
Specifies that a copy of the object should be used for assignment.The previous value is sent a
release
message.The copy is made by invoking the
copy
method. This attribute is valid only for object types, which must implement theNSCopying
protocol.
So yes, you're correct... readonly
creates a getter method and copy
would be effectively ignored, since there's no setter method that does assignment.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With