On 18 Nov 2010, at 13:01, jonat...@mugginsoft.com wrote:

> 
> On 18 Nov 2010, at 12:35, Remco Poelstra wrote:
> 
>> Hi,
>> 
>> I've a object like to following:
>> @interface <Proto> {
>>      NSMutableArray *items;
>> }
>> @property (nonatomic,readonly) NSMutableArray *items;
>> @end
>> 
>> I also have a protocol as follows:
>> @protocol Proto
>> @property (nonatomic,readonly) NSArray *items;
>> @end
>> 
>> 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?
>> Any insight would be appreciated.
>> 
> 
> Define a class extension (an unnamed category) within your implementation .m 
> file:
> 
> @interface <Proto> ()
> @property (nonatomic. readwrite) NSMutableArray *items;
> @end
> 
> Your object will have readwrite access.
> 
> See http://www.friday.com/bbum/2009/09/11/class-extensions-explained

Sorry. Wrong answer. Didn't read the question properly.

Don't make items a property if you don't want to advertise it to the outside 
world.

I would have a custom getter called items which returns [items copy].
When you modify items raise manual KVO notifications to inform observers of 
your changes.

Jonathan_______________________________________________

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