我让 MainViewController 调用 WebViewController(来自 UICatalog 示例应用程序)像 WebViewController targetViewController ... targetViewController.setValue(value) 之类的东西,它说:“错误:在不是结构或联合的东西中请求成员'setValue' ”...
问问题
1940 次
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 回答