Re: Objective-C Question
Re: Objective-C Question
- Subject: Re: Objective-C Question
- From: Mike Abdullah <email@hidden>
- Date: Mon, 11 Mar 2013 20:26:44 +0000
On 11 Mar 2013, at 20:21, Dave <email@hidden> wrote:
> Hi,
>
> Take the following example:
>
> @interface BaseClass
>
> +(NSMutableDictionary*) newDict;
>
> @end
>
> @implementation BaseClass
>
> +(NSMutableDictionary*) newDict
> {
>
>
> return [[NSMutableDictionary alloc] init];
> }
>
>
> @class NewClass;
>
> @interface NewClass : BaseClass
>
> +(NSMutableDictionary*) newDict;
>
> @end
>
> #import "BaseClass.h"
>
> @implementation NewClass
>
> +(NSMutableDictionary*) newDict
> {
> NSMutableDictionary* myDict;
>
> myDict = [[super class] newDict];
> [myDict setObject:@"Some Data" forKey:@"someKey"];
>
> return [[NSMutableDictionary alloc] init];
> }
>
> @end
>
>
>
>
> I had assumed (and I thought I'd done something like this before) that the:
>
> myDict = [[super class] newDict];
>
> statement would call newDict in BaseClass???? Instead it calls the version in NewClass and goes into an infinite loop!!
Yes. [super class] calls super's implementation of the -class method. You haven't overridden -class, so it does the same thing as [self class].
People often make the same mistake in trying to do [super respondsToSelector…
I'm guessing what you're really after is [[self superclass] newDict]
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden