I created two classes in objective c and I would like to use one of them as a property of the other. To be more concrete, one of the classes is a ‘term’ that contains an integer variable and an nsstring that acts as the variable. The other class is an ‘expression’ that has an nsmutable array as an instance variable that contains ‘terms’ as its objects. What I want to do is have add the possibility of having one of the terms have an ‘expression’ as a property to implement something like distributing over parentheses and substituting an expression for a variable. However, Xcode is telling me that ‘expression’ is not an acceptable type name despite the fact that I have imported my expression header file. I think I may have read somewhere that only foundation classes are available to use as properties. What can I do to add this class as an instance variable?
Share
I suspect you have an import cycle, like this:
Expression.h
Term.h
Notice how each file imports the other? That won’t work. Instead, you need to use forward declarations:
Expression.h
Term.h
Then, in your
.mfiles, you can safely import both.hfiles:Expression.m
Term.m