2015-03-04 2 views
0

Я предполагаю, что теперь все будут использовать Xcode 5.1 и выше. После добавления 64-битной поддержки Valid Architecture компилятор выдает предупреждения, связанные с 64-битными типами данных. Я работаю над приложением, которое поддерживается iOS6.0, если я изменяю типы данных с 64-разрядным, будет ли он работать нормально на 32-битных устройствах? Потому что, изменяя типы данных до 64 бит, вы создадите предупреждения компилятора для 32 бит. Спасибо заранее.Удаление предупреждений о 64-битном SDK

+1

Возможно, вам захочется прочитать руководство по 64-битным переходам для приложений с какао-касанием, найденное на этом [link] (https://developer.apple.com/library/ios/documentation/General/Conceptual/CocoaTouch64BitGuide/Introduction/Introduction. html) – Bamsworld

+0

Не следует. И попробуйте использовать тип данных, который не будет затронут с 64-битным или 32-битным изменением. Как и использование NSInteger вместо обычного int и т. Д. –

ответ

2

Если вы действительно беспокоитесь о размере типа данных, будьте ясны в своем кодировании и используйте стандартные типы, которые будут работать независимо от компилятора.

uint8_t, uint16_t, uint32_t and uint64_t 
int8_t,int16_t,int32_t and int64_t 

Единственное место, где вам действительно нужно беспокоиться с 64 бит против 32 бит, если вы делаете предположения относительно выравнивания байт структур в вашем кодировании. Однако решение этого - также использовать стандартные типы.

для подобных NSLog, где вы получаете много ошибок, связанных с использованием типов типов NSInteger, вы должны отнести их к тому, что вы хотите, чтобы они имели в виду в заявлении формата. Обычно xcode исправляет их для вас.

Есть ли у вас какие-либо конкретные примеры 32/64, о которых вы беспокоитесь?

+0

Нет конкретных примеров, но я получаю много предупреждений, которые требуют 32-битного преобразования 64-битного типа. Поэтому просто хотелось убедиться, что если я их конвертирую в соответствии с тем, что предлагает xcode, это никак не повлияет на приложение при запуске на 32-битных устройствах. –

+0

Можете ли вы привести несколько примеров, чтобы я мог видеть, какое предупреждение есть и в какой ситуации? Большинство предупреждений, которые я получаю, относятся к NSLog, которые я разрешил исправление xcode. Если ошибки связаны с смешиванием использования коротких, int, long, long long и т. Д., Попробуйте не смешивать int и long (использовать long) или переходить на стандартные типы. Переход с 32-битного на 64 вряд ли потеряет вас, поскольку он добавит больше диапазона в числа. Как отмечено в ответе, он предполагает смещения выравнивания структуры, размеры указателей одинаковы и чтение/запись двоичных данных на серверы с разных устройств на 32/64 бит, где лежат реальные проблемы. –

+0

Примеры: 1. предупреждение: неявное преобразование теряет целую точность: 'NSInteger' (aka 'long') до 'int-button tag int. 2. предупреждение: неявное преобразование теряет целую точность: 'NSUInteger' (aka 'unsigned long') до 'int' - [количество массивов], назначая его int 3. warning: значения типа 'NSInteger' не должны использоваться как аргументы формата; добавьте явное приведение к «длинному», а не –

Смежные вопросы