0

MainViewControllerがWebViewControllerを呼び出しています(UICatalogサンプルアプリケーションから)WebViewControllerで、WebViewController.hから変数(NSString * value)にパラメーターとして渡される値を設定する関数setValue(){...}を作成しますが、MainViewControllerから試行するとWebViewController targetViewController ... targetViewController.setValue(value)のようなもので、次のように表示されます。「エラー:構造体またはユニオン以外のメンバー'setValue'の要求」...

4

3 に答える 3

1

「値」という名前のプロパティがあり、@sythesize を使用してメソッドを作成する場合、その「.」を使用して呼び出します。表記:

targetViewController.value = whatever;

または、あなたやメソッドを書いている @synthesize に関係なく、セッターを完全に呼び出すことができます。

[targetViewController setValue:whatever];

プロパティの構文 (class.property = anything) は、実際には "setValue:" メソッドを呼び出すためのショートカットにすぎません。その代わりに、プロパティの @property および @synthesize メカニズムは、役に立つコードを書いているだけです。

編集:「setValue:」メソッドを書いたばかりの場合は、「class.value = newValue」表記を使用して呼び出すことができますが、それは正しくありませんでした。「。」を使用するには @property を定義する必要があります。表記。

于 2008-10-28T09:24:58.733 に答える
1

私は信じている

targetViewController.value = whatever;

@property が既に宣言されている場合にのみ機能します。そうでない場合は、完全なメソッド呼び出し構文を使用する必要があります。

[targetViewController setValue: whatever];

そうでなければ、Kendall はセッターと @synthesize の使用について正しいです。

また、構文は手続き型 C を使用して記述されています

targetViewController.setValue(value);

これは間違いなく機能しません。

于 2008-10-28T10:42:09.310 に答える
0

また、必ず targetViewController.h ファイルを #import する必要があります。

于 2008-10-30T13:47:11.557 に答える