我有MainViewController调用WebViewController(来自UICatalog示例应用程序) 在WebViewController中我创建了一些函数setValue(){...}来设置一些从WebViewController.h作为参数传递给变量(NSString * value)的值,但是当我从MainViewController尝试类似WebViewController targetViewController时... targetViewController.setValue(value),它说:“错误:请求成员'setValue'的东西不是s结构或联合”......
答案 0 :(得分:1)
如果您有一个名为“value”的属性,并使用@sythesize为您创建方法,在这种情况下,您使用“。”调用。符号:
targetViewController.value = whatever;
或者你可以直接调用setter而不管你或@synthesize编写方法:
[targetViewController setValue:whatever];
属性语法(class.property = whatever)实际上只是调用“setValue:”方法的快捷方式,作为回报,属性的@property和@synthesize机制只是为您编写了一段有用的代码。
编辑:之前我曾说过如果你刚写了一个“setValue:”方法,你可以使用“class.value = newValue”表示法来调用它,但这是不正确的 - 你必须定义一个@property来使用“。 “符号
答案 1 :(得分:1)
我相信
targetViewController.value = whatever;
仅在您已经声明了@property时才有效;如果没有,您将需要使用完整方法调用语法:
[targetViewController setValue: whatever];
否则,Kendall使用setter和@synthesize是正确的。
此外,您的语法是使用程序C
编写的targetViewController.setValue(value);
肯定无效。
答案 2 :(得分:0)
您还需要确保#import targetViewController.h文件。