1. ホーム
  2. ios

[解決済み] 警告 xcode 6 で暗黙の変換により整数の精度が失われる

2022-02-09 18:34:20

質問

重複しているかもしれませんが、30件ほど 暗黙の変換で整数の精度が落ちる xcodeをバージョン6にアップデートした後、私のiosプロジェクトで警告が発生しました。

最初の例

NSArray * stations = [self stationsJSON][KEY_ITEM_LIST];

int newSize = (stations.count + 1); // Implicit conversion loses Integer precision: 'unsigned long' to 'int'

2つ目の例

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    ...
    int index = indexPath.row / 2; // Implicit conversion loses Integer precision: 'long' to 'int'
    ...
}

警告の意味がわかりました。NSIntegerを使用することで、この警告を回避することができます。

よくわからないのですが。 なぜ xcode 5 では警告が出なかったのか? ? また、次の行を変更しても警告が出ないのはなぜですか?

int index = indexPath.row / 2;

になります。

int index = indexPath.row / 2i;

解決方法は?

NSArray countNSUInteger .

NSIndexPath rowNSInteger .

64ビットシステムの場合。 NSUIntegerNSInteger は64ビットですが int は32ビットです。そのため、値がフィットせず、警告が発生します。

を避けるのがベストです。 int を iOS で使用することができます。代わりに、扱う値と同じ型を使用します。

NSInteger index = indexPath.row / 2;

Xcode 6では、デフォルトの警告のため、おそらくこれらを見ることができます。正しい警告の設定と64ビット用のビルドを行えば、Xcode 5でこれらを簡単に見ることができます。