0

我让 MainViewController 调用 WebViewController(来自 UICatalog 示例应用程序)像 WebViewController targetViewController ... targetViewController.setValue(value) 之类的东西,它说:“错误:在不是结构或联合的东西中请求成员'setValue' ”...

4

3 回答 3

1

如果您有一个名为“value”的属性,并使用@sythesize 为您创建一个方法,在这种情况下您可以使用该“.”来调用。符号:

targetViewController.value = whatever;

或者,您可以直接调用 setter,无论您或 @synthesize 是否编写该方法:

[targetViewController setValue:whatever];

属性语法(class.property = 不管)实际上只是调用“setValue:”方法的快捷方式,而作为回报,属性的@property 和@synthesize 机制只是为您编写了一些有用的代码。

编辑:我之前说过,如果你只是写了一个“setValue:”方法,你可以使用“class.value = newValue”表示法来调用它,但这是不正确的——你必须定义一个@property才能使用“。” 符号。

于 2008-10-28T09:24:58.733 回答
1

我相信

targetViewController.value = whatever;

仅当您已经声明了 @property 时才有效;如果没有,您将需要使用完整的方法调用语法:

[targetViewController setValue: whatever];

否则,Kendall 关于使用 setter 和 @synthesize 是正确的。

您的语法也是使用过程 C 编写的

targetViewController.setValue(value);

绝对行不通。

于 2008-10-28T10:42:09.310 回答
0

您还需要确保 #import 您的 targetViewController.h 文件。

于 2008-10-30T13:47:11.557 回答