NSInteger/ NSUInteger NSIntegerやNSUIntegerは32bit/64bit環境では異なる型として扱われる。NSIntegerの場合、32bit環境ではint、64bit環境ではlongとして扱われる。 なおarm64の処理系ではint型そのものは32bitの値として扱われる。それまでのarm7まではintもlongも同じ32bitの値として扱われていたので差がなかったのが(意外に知らない人が多い)、arm64にてlongが倍精度に変更された。 そのため、 NSInteger aValue = 100; NSLog(@"%d", aValue); 例えばこんなコードも、64bitアーキテクチャを対象に含めると警告が出てしまう(NSIntegerがlongのため、%ldを使う必要がある)。もっとも、aValueの値が32bitの範囲を超えない限り、実際に問題に