Re: Simple messages problem
Re: Simple messages problem
- Subject: Re: Simple messages problem
- From: Quincey Morris <email@hidden>
- Date: Thu, 20 Mar 2008 16:16:43 -0700
On Mar 20, 2008, at 15:25, K. Darcy Otto wrote:
So, I seem to be having a problem with the following code, and I
think I've traced it to how the messages are nested; but I cannot
seem to solve it. Consider the following code, which works without
warnings (self.sequent is an NSArray):
DeductionLine *dl1 = [self.sequent objectAtIndex:lineCount-1];
Justification *j1 = [dl1 justification];
NSString *rule1 = [j1 rule];
But the following line generates a warning: NSString may not respond
to -rule.
NSString *rule2 = [[[self.sequent objectAtIndex:lineCount-1]
justification] rule];
I'm confused about the warning, because [[self.sequent
objectAtIndex:lineCount-1] justification] returns type
Justification, not NSString. Both examples compile and work; but
the warning is in the second case only. Why, and how can I get rid
of the warning? Any help would be appreciated. (I think I've
included everything necessary to diagnose the problem; please let me
know if I haven't; all of this is under Objective-C 2.0 with
@synthesize sequent in DeductionLine.)
It sure looks like the compiler is complaining about the wrong thing.
The real problem is that [self.sequent objectAtIndex:lineCount-1] is
of type 'id' and the compiler doesn't know which 'justification' is
going to apply to it, so it doesn't know the return type of that, so
it doesn't know the type of object that 'rule' is being sent to. If
you want to write it in one line, you need:
NSString *rule2 = [[(DeductionLine *)[self.sequent
objectAtIndex:lineCount-1] justification] rule];
to get rid of the warning.
_______________________________________________
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