You are correct, it does not make sense to have both.
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.