0

たとえば、ドキュメントでは、KVC スタイルの検証メソッドは次のように実装されています。

-(BOOL)validateAge:(id *)ioValue error:(NSError **)outError

彼らは id* を ioValue の型として使用しました。これはメソッド シグネチャの一部ではないため、次のようなことをすると問題があるのではないかと思います。

-(BOOL)validateAge:(NSNumber *)ioValue error:(NSError **)outError

これはKVCでも問題ありませんか?

4

1 に答える 1

1

それらは同じではないため、それは機能しません。メソッドがポインターへのポインターを受け入れるため、id*より近くなります。NSNumber**したがって、メソッドは次のようになります。

-(void)validateAge:(NSNumber**)ioValue error:(NSError**)outError

しかし、それを行う意味はありませんid必要なすべてのことに対して完全にうまく機能し、それを変更して後でその属性を調整すると、アプリケーションに微妙なエラーが発生する可能性があります。

簡単な答え、はい、入力パラメーターのタイプを変更できます。しかし、あなたは本当にすべきではありません。

于 2010-06-14T16:07:17.153 に答える