Глядя в заголовки, я вижу, что для 64-битной системы, которую я компилирую, как NSUInteger, так и UInt32 определены как 32-разрядные целые числа без знака, поэтому почему Xcode утверждает потерю точности в предупреждении, когда я назначаю один к другому?Какао: NSUInteger и UInt32 оба определены как 32-разрядное целое без знака. Так почему же предупреждения?
«Неявное преобразование теряет целочисленную точность:„NSUInteger“(он же„неподписанных долгое“) для„UInt32“(он же„неподписанных Int“)»
я могу видеть, что предупреждение имеет в виду одно, как «длинный 'и один как' int ', но поскольку оба они разрешают одно и то же 32-битное целое число без знака в этой системе, не должно быть потери точности.
На самом деле это не вызывает никаких проблем, но, похоже, я, вероятно, неправильно понял что-то, поэтому хотел бы лучше понять.
Был этот вопрос, но он обращается к безопасности, в отличие от «почему»: Can I safely store UInt32 to NSUInteger?
Возможно, потому что NSUInteger может быть 64 бит в длину на других системах. – Rakesh