Op 19-11-2010 3:51, Ken Thomases schreef:
I of course want the items to be read only for the outside world, but the 
object itself should be able to modify it. Now the compiler complains about the 
properties not matching. How should I solve this? Make a custom getter that 
returns an immutable array? Make the property refer to a mutable array? Make 
the property an immutable array and make copies of the array while modifying it?

The ivar type and the property type don't have to match. In fact, there does 
not need to be any ivar backing whatsoever to properties.

Change your property declaration to NSArray *, and implement the getter with 
[[array copy] autorelease] or similar.

You don't need to implement the getter.  The Cocoa docs are very clear that 
callers must respect the declared type of properties (i.e. return type of 
getters).  That is, if the getter is declared to return an immutable NSArray, 
then callers must not interrogate the returned object to determine if it's 
really mutable nor invoke mutation methods on it.  It may be, and often is 
(even in framework classes), that such a method returns an object that is, in 
fact, an NSMutableArray.  That's an irrelevant implementation detail.

Thanks for the tips. Hope this will kill some warnings :)

Kind regards,

Remco Poelstra
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to