How can I have references between two classes in Objective-C?

我与影子孤独终老i 提交于 2019-12-30 05:01:10

问题


I'm developing an iPhone app, and I'm kinda new to Objective-C and also the class.h and class.m structure.

Now, I have two classes that both need to have a variable of the other one's type. But it just seems impossible.

If in class1.m (or class2.m) I include class1.h, and then class2.h, I can't declare class2 variables in class1.h, if I include class2.h and then class1.h, I can't declare class1 variables in class2.h.

Hope you got my idea, because this is driving me nuts. Is it really impossible to accomplish this?

Thanks.


回答1:


You can use the @class keyword to forward-declare a class in the header file. This lets you use the class name to define instance variables without having to #import the header file.

Class1.h

@class Class2;

@interface Class1
{
    Class2 * class2_instance;
}
...
@end

Class2.h

@class Class1;

@interface Class2
{
    Class1 * class1_instance;
}
...
@end

Note that you will still have to #import the appropriate header file in your .m files




回答2:


A circular dependency is often an indication of a design problem. Probably one or both of the classes have too many responsibilities. A refactoring that can emerge from a circular dependency is moving the interdependent functionality into its own class that the two original classes both consume.

Can you describe the functionality that each class requires from the other?



来源:https://stackoverflow.com/questions/1119570/how-can-i-have-references-between-two-classes-in-objective-c

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!