MainViewControllerがWebViewControllerを呼び出しています(UICatalogサンプルアプリケーションから)WebViewControllerで、WebViewController.hから変数(NSString * value)にパラメーターとして渡される値を設定する関数setValue(){...}を作成しますが、MainViewControllerから試行するとWebViewController targetViewController ... targetViewController.setValue(value)のようなもので、次のように表示されます。「エラー:構造体またはユニオン以外のメンバー'setValue'の要求」...
3 に答える
「値」という名前のプロパティがあり、@sythesize を使用してメソッドを作成する場合、その「.」を使用して呼び出します。表記:
targetViewController.value = whatever;
または、あなたやメソッドを書いている @synthesize に関係なく、セッターを完全に呼び出すことができます。
[targetViewController setValue:whatever];
プロパティの構文 (class.property = anything) は、実際には "setValue:" メソッドを呼び出すためのショートカットにすぎません。その代わりに、プロパティの @property および @synthesize メカニズムは、役に立つコードを書いているだけです。
編集:「setValue:」メソッドを書いたばかりの場合は、「class.value = newValue」表記を使用して呼び出すことができますが、それは正しくありませんでした。「。」を使用するには @property を定義する必要があります。表記。
私は信じている
targetViewController.value = whatever;
@property が既に宣言されている場合にのみ機能します。そうでない場合は、完全なメソッド呼び出し構文を使用する必要があります。
[targetViewController setValue: whatever];
そうでなければ、Kendall はセッターと @synthesize の使用について正しいです。
また、構文は手続き型 C を使用して記述されています
targetViewController.setValue(value);
これは間違いなく機能しません。
また、必ず targetViewController.h ファイルを #import する必要があります。