I want to be able to initialize one of my classes with something that looks like this
ModelClass *aModelClass = [[ModelClass alloc] initWithXML:imageXML];
So this is what I wrote in the interface file:
-(id)initWithXML:(TBXMLElement *)imageXML
and like this in the implementation file:
-(id)initWithXML:(TBXMLElement *)imageXML
{
self = [super init];
if(imageXML)
{
// do stuff with self.foo
return self;
}
return nil;
}
So I have declared it in the interface file and also the i开发者_如何学Cmplementation file. But the error I get on both is that they are conflicting. So how do I do this if not declare the exact same method signature in both?
The error I now get is:
Conflicting types for '-(id)initWithXML:(TBXMLElement *)imageXML'
I was looking mostly at this article to understand how to do this and understanding how it should be done in Objective-C but this has not clues as to help me with my problem.
This may not be it, but you do appear to missing a semi-colon in your interface definition:
-(id)initWithXML:(TBXMLElement *)imageXML
should be
-(id)initWithXML:(TBXMLElement *)imageXML;
but maybe that is just a copy and paste error when you were writing up your question.
Also make sure you
#import "TBXML.h"
in ModelClass.h (if you include it in ModelClass.h then other .m files that import ModelClass.h will also get the definitions for TBXMLElement
which they will need.
You are returning nil
. You must should always return an object.(Thanks to Josh for pointing out that you don't always need to return an object) Like this:
-(id)initWithXML:(TBXMLElement *)imageXML {
if (self = [super init]) {
if(imageXML) {
// do stuff with self.foo
}
}
return self;
}
Also, I just remembered encountering something similar to that myself. Make sure you import TBXML.h
in both classes, the ModelClass
, as well as the controller where you are creating the ModelClass
. The problem is that the compiler doesn't know what a TBXMLElement
is, so you need to instruct it by importing the relevant header(s).
Thanks for the help! I fondled in the dark for while and didn't find the cause of the problem although both solutions posted here by "sudo rm -rf" and "idz" seem likely.
I worked after I simple deleted my code and wrote it again from the beginning.
精彩评论