On Oct 6, 2010, at 03:18, Citizen wrote: > Is there any way to synthesize (using @synthesize) KVC compliant collections? > > I know there are scripts in the Xcode scripts menu to generate declarations > and definitions along the lines of: > > - (NSArray *) myArray; > - (unsigned) countOfMyArray; > - (id) objectInMyArrayAtIndex:(unsigned)theIndex; > - (void) getMyArray:(id *)objsPtr range:(NSRange)range; > - (void) insertObject:(id)obj inMyArrayAtIndex:(unsigned)theIndex; > - (void) removeObjectFromMyArrayAtIndex:(unsigned)theIndex; > - (void) replaceObjectInMyArrayAtIndex:(unsigned)theIndex withObject:(id)obj; > > But is there a way to use properties to generate these methods?
No, @synthesize cannot generate these methods. However, it's not entirely clear what you are expecting/hoping will happen. Unlike accessors (getters/setters) for scalar properties, these accessors are optional (roughly -- these methods must be implemented in certain combinations to be recognized), so synthesized methods don't seem useful. If you need the methods at all, then you need custom code in them that can't be synthesized. Are you running into a specific difficulty? BTW, you left one method out of your list: (void) setMyArray: (NSArray*) theArray; It's also worth keeping in mind that due to a historical irregularity (design flaw), if you implement the myArray getter you can't use the NSArray proxy object that's normally returned by valueForKey:@"myArray" -- when you've implemented countOfMyArray/objectInMyArrayAtIndex: -- so in those circumstances you have to return a real array or write your own proxy. One final quibble: The type of all the index parameters is NSUInteger, not unsigned. _______________________________________________ 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