我創建了兩個應用程序,稱它們爲服務器和客戶端。這兩個應用程序的xcode項目都使用通用的子項目。這些應用程序是爲特定客戶設計的,可在iOS7/iPad上運行正確處理32/64位
爲了進行測試,我正在編譯服務器應用程序並在iPad 3上運行它。客戶端應用程序在Air上運行。當我爲iPad3編譯時,Xcode引發了一堆警告,因爲NSInteger/NSUInteger類型爲32位,我使用的邏輯(在這種情況下,格式爲%lu的NSString)抱怨(因爲它是爲64位)
但更麻煩的是,我使用NSKeyArchiving將數據從一個iPad打包發送到另一個 - 我猜如果存儲在這些類型的數據超過32位,我會遇到問題。
它看起來像我需要在另一個基本類型,如UInt32而不是NSUInteger標準化 - 是正確的方法?任何其他提示?
編輯: 這裏有一個例子:
+ (NSUInteger)nextTransactionNumber
{
static int64_t currentTransactionNumber = 0;
OSAtomicIncrement64(¤tTransactionNumber);
return currentTransactionNumber;
}
編譯沒有爲64位,但對回報32位的悲傷。那麼我最好使用Uint32?
您應該能夠在前面放置(長)來解決這個問題的整數 - 免費橋接將消除32位問題 大多數時候。 – AMayes
如果在機器之間發送任何數據,即使不順從,最好標準化大小(uint32_t,uint64_t)和字節順序(使用ntohl,ntohs等)。 – Linuxios