[解決済み] Objective-Cの暗黙の変換で整数精度の「NSUInteger」(別名「unsigned long」)が「int」に変換されなくなる警告
2022-04-13 13:08:47
質問
練習問題を解いていたら、次のような警告が表示されました。
暗黙のうちに整数の精度を失う変換:'NSUInteger' (別名 'unsigned long') から 'int' へ
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[])
{
@autoreleasepool {
NSArray *myColors;
int i;
int count;
myColors = @[@"Red", @"Green", @"Blue", @"Yellow"];
count = myColors.count; // <<< issue warning here
for (i = 0; i < count; i++)
NSLog (@"Element %i = %@", i, [myColors objectAtIndex: i]);
}
return 0;
}
<イグ
解決方法は?
その
count
メソッドの
NSArray
は
NSUInteger
また、64ビットのOS Xプラットフォームでは
-
NSUInteger
は次のように定義されます。unsigned long
であり、かつ -
unsigned long
は64ビットの符号なし整数である。 -
int
は32ビット整数です。
そこで
int
よりも小さいデータ型です。
NSUInteger
そのため、コンパイラの警告が表示されます。
参照 NSUInteger の「Foundation Data Types Reference"」にあります。
32ビットアプリケーションを構築する場合、NSUIntegerは32ビットの符号なし整数です。 整数です。64ビットアプリケーションでは、NSUIntegerは64ビット符号なし整数として扱われます。 の整数です。
このコンパイラの警告を修正するには、ローカルな
count
という変数があります。
NSUInteger count;
または (配列にそれ以上のものが含まれないと確信している場合)
2^31-1
の要素で構成されています!)。
明示的なキャストを追加します。
int count = (int)[myColors count];
関連
-
[解決済み] エラー: バイナリ式のオペランドが無効です ('float' と 'float')
-
[解決済み] dispatch_after - GCD in Swift?
-
[解決済み] NSTaggedPointerStringをNSStringに変換する。
-
[解決済み] Objective-Cの#importと#includeの違いは何ですか?
-
[解決済み] ターゲット・パターンに '%' が含まれていません。メイクファイル
-
[解決済み] Objective-Cで抽象クラスを作成する
-
[解決済み】Cocoaでスタックトレースをコンソール/ログに出力するにはどうすればいいですか?
-
[解決済み】コンパイルの警告:アーキテクチャi386のファイルを処理するルールがない
-
[解決済み】idの代わりにinstancetypeを使い始めるのは有益でしょうか?
-
[解決済み】NSMutableArrayから反復処理中に削除する最良の方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Xcodeのビルド失敗 "アーキテクチャx86_64の未定義シンボル"
-
[解決済み】Objective-C。NULL、nil、@""の違いは何ですか?
-
[解決済み] クラス 'test_coredataAppDelegate' の重複したインターフェイス宣言
-
[解決済み] iPhoneでObjective-Cはガベージコレクタを搭載しているのか?
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] objective-c/cocoaで例外を投げる
-
[解決済み] 「NSString *' 型のパラメータに 'const NSString *' を送ると修飾子が破棄される」警告
-
[解決済み】キーボードを簡単に解除する方法は?
-
[解決済み】iOS7でステータスバーを隠すことができない。
-
[解決済み】ストーリーボードで、複数のコントローラで使用するためのカスタムセルを作成する方法は?