web-dev-qa-db-ja.com

整数からポインタへの変換に互換性がなく、「int」から「int *」に割り当てられています

もう1つの厄介な警告があります。基本的に、私はintを次のように宣言しています:@property (nonatomic, assign) int *myInt;そして次のように設定します:myInt = 0;。また、実装ファイルで合成されます。 intの値を設定した行に警告が表示され、Incompatible intiger to pointer conversion assigning to 'int *' from 'int'.これを修正するにはどうすればよいですか?

20
Preston

エラーメッセージには大きなヒントがあります。

CおよびObjective Cでは、intはプリミティブデータ型です。 int *は、「intへのポインタ」を意味しますが、intが必要だったようです。

プロパティを次のように変更します。

@property (nonatomic, assign) int myInt;

詳細については、「Cポインタ」をgoogleにすると、次のような情報が見つかります。 http://pw1.netcom.com/~tjensen/ptr/pointers.htm

57
occulus

はい、単にアスタリスク(*)宣言から。

たとえば、BOOL * isCheckedの代わりにBOOL isCheckedのようにします。

13

これを解決する別の方法は、ポインタを宣言しないことです(アスタリスクを削除)。

@interface ViewController : UIViewController {
    NSUInteger myObjcInt;  // unsigned ( >= 0 ) NSObject int, yo
}
2
Rob

int *MyIntは、intではなく、intへのポインタです。
他の人が言ったように、単に*そしてあなたは通常のintを持っています。

1
Riwels