I have an @interface
for class Foo
defined in the header Foo.h
and the corresponding implementation in the file Foo.m
. If I add another implementation Foo.m
of the class in a different directory to the Xcode project, I can specify the "Target Membership" in the "File" tab of the "Utilities" bar to assign the implementation to a specific target.
However, this does not work for header files. If I add a different header Foo.h
for class Foo
then I can not assign a "Membership" in the "File" tab of the "Utilities" bar. I always get an error "Duplicate interface for class ' Foo
'", and then several errors "Property has a previous declaration" for each property I declare.
How can I use a class defined in different headers with the same name for different targets using Xcode 4.5.2?
UPDATE: I had already tried the solution suggested in this thread and it doesn't work in Xcode 4.5.2, the error message is as posted above.
Since your Foo class is only partially different between the two targets then I would suggest that you have one Foo.h and one Foo.m. You then use compiler directives to deal with the differences.
Go to the build settings for each target and add a flag under "Other C Flags". For example, for target A you can add:
-DTARGETA
and for target B you can add:
-DTARGETB
Then in Foo.h you can do:
@interface Foo : NSObject
@property commonProperty;
#if defined(TARGETA)
@property targetAProperty;
#elif defined(TARGETB)
@property targetBProperty;
#endif
@end
Do something similar for Foo.m.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.