0

しばらくupdateTheValue()使用して呼び出した関数があります。[self updateTheValue]最近、2 つのことが起こりました。メソッドにメソッド呼び出しを追加するviewDidLoad()と、クラスがこれに応答しない可能性があるという警告が表示されます。第 2 に、オブジェクトをupdateTheValue()文字列のように渡す必要がありますが、ほとんどは int です。そのため、メソッドに渡す NSObject を宣言しました。int は NSObject スロットに収まりますか、それとも代わりに何を使用すればよいですか?

私はこれらを別々に投稿していたでしょうが、NSObject を受け入れるように更新updateTheValue()した後、この関数へのすべての参照で、クラスが「-updateTheValue に応答しない可能性があります」というエラーが発生するため、関連しているようです。

4

2 に答える 2

3

次のようにメソッドを作成できます。

-(void)updateTheValue:(NSObject *)anObject
// or use -(void)updateTheValue:(id)anObject
{
   if ([anObject isKindOfClass:[NSString class]]) {
      // Do your string handling here
   }
   else if ([anObject isKindOfClass:[NSNumber class]]) {
      // Do your number handling here
   }
}

次のように使用します。

[self updateTheValue:[NSNumber numberWithInt:42]];

ただし、2 つの異なる方法を実行することをお勧めします。つまりupdateTheValueWithInt:updateTheValueWithString:読みやすく理解しやすくすることです。

メソッド シグネチャを使用する前に、必ずメソッド シグネチャを表示して、コンパイラがこれが何をするかを認識できるようにしてください。

別のメソッドを使用する場合は、それらをオブジェクトintにラップせずに直接使用できます。NSNumber

于 2010-07-14T07:46:49.997 に答える
1

最初の問題:

updateTheValue() は、呼び出す前に宣言する必要があります。

関数の呼び出しの前に関数の定義を移動するか、上部にプロトタイプを追加できます。たとえば、次のように追加します。

  • (無効) updateTheValue;

頂上付近。

2番目の問題:

[NSNumber numberWithInt:45] などの NSNumber を使用します。

于 2010-07-14T07:43:33.907 に答える