前向声明属性A-> B,B-> A

时间:2014-12-05 03:04:24

标签: objective-c

我希望在B类中拥有@property A类,在A类中拥有@property B类。

这是我的情况:

A类(继承SNCNode):
-in classA.h:

@class classB;

@property classB foo1;

@end

-in classA.m:

#import "classB"

B类(继承SCNNode):

-in classB.h:

#import "classA"

@property classA foo2;

@end

-in classB:

#import "classA"

MainViewController: -in MainViewController.m:

ClassB *b = [[ClassB alloc] init];

b.foo2.foo1 = ...;

但是当我想通过我的属性foo2在B类中设置属性foo1时,我得到了一个异常: NSInvalidArgumentException - 无法识别的选择器发送到实例

我的意思是(在B级): self.foo2.foo1 = ...;

如果可能的话,如何解决?

[编辑] 例外:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[SCNNode setMyZombie:]: unrecognized selector sent to instance 0x15e8b530'
*** First throw call stack:
(0x27b505f7 0x35604c77 0x27b55abd 0x27b53999 0x27a84b88 0x72963 0x6ea01 0x2aff846d 0x2aff81dd 0x2affe0a7 0x2affbaff 0x2b065d91 0x2b257dc1 0x2b25a219 0x2b264ac9 0x2b258abb 0x2e2700c9 0x27b16ffd 0x27b162c1 0x27b14a5f 0x27a61b31 0x27a61943 0x2b05c8f7 0x2b0576f1 0x75639 0x35ba0aaf)
libc++abi.dylib: terminating with uncaught exception of type NSException

1 个答案:

答案 0 :(得分:0)

目前还不清楚你的问题是什么,这是猜测:

您可以使用@class <name>;在Objective-C中转发声明一个类。例如,在B.h

@class A;  // forward declare A

@interface B

@property A foo2

@end

AB的实施中,您应该导入两个标题。

HTH