+[NSMutableArray array] returns a mutable array. That's the reason the return type is + (id) and not + (NSArray *).

When implementing connivence initializers, you should invoke [self alloc], not [ASpecificClass alloc]. Cocoa uses this pattern frequently, and you can safely depend on it.

Objective-c classes are first class objects. That's a difference from many other languages. Once you get uses to classes being first class objects, and the fact that classes can have dynamic messages, this becomes a lot more natural.

Good Luck -
Jon Hess

On Jan 9, 2009, at 5:45 PM, Kyle Sluder wrote:

On Fri, Jan 9, 2009 at 8:40 PM, Graham Cox <graham....@bigpond.com> wrote:
Isn't guaranteed by the semantics of inheritance? I've specified the class: [NSMutableArray ... and what I want it to give me... array]; And the fact that NSMutableArray inherits NSArray ensures that anything that array can
do, NSMutableArray can do.

No, it means that NSMutableArray responds to everything NSArray
responds to; there's no semantic guarantee.  What if the subclass
needs a different designated initializer, maybe one with more
arguments?  It would make sense for it to override the superclass's
designated initializer to throw an exception.  But without overriding
the convenience constructor, this will blow up.

--Kyle Sluder
_______________________________________________

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/jhess%40apple.com

This email sent to jh...@apple.com

_______________________________________________

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