У меня есть множество спецификаторов формата строки в вызовах NSLog/NSAssert и т.д., которые используют %d
и %u
с типами NSInteger (= int on 32bit)
и NSUInteger (= unsigned int on 32bit)
соответственно.
При преобразовании приложения в 64 бит это дает предупреждения (конечно), поскольку ожидается %ld %lu
для того, что теперь стало типом long
и unsigned long
.
Простое преобразование спецификаторов формата, конечно, представит обратные предупреждения в 32-битной сборке.
Таким образом, единственное решение, которое я вижу, чтобы стать предупреждающим, - это использование 64-битных спецификаторов и приведение к 64-битным значениям везде, где в 32-битной сборке содержится предупреждение.
Но мне было интересно, могут ли быть спецификаторы формата специально для типов NSInteger
и NSUInteger
, которые будут работать на обеих архитектурах без кастования?