2014-03-13 42 views
5

我最近更新了Xcode到5.1版。更新後,它運行良好,所有模擬器除iOS 7.1外,其中它提供了一個mach-O鏈接錯誤。此外,「構建設置」選項卡中只有64位體系結構選項。據我所知,這是造成所有問題的原因。有誰知道這個&如何解決它的原因?iOS 7.1在更新到Xcode 5.1後出現錯誤

這裏有一些警告&錯誤,我已經有了:

警告:

Values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead 

錯誤:

Symbol(s) not found for architecture x86_64 

感謝。

+0

[ARM64體系結構在xcode 5.1中可能的重複](http://stackoverflow.com/questions/22323039/arm64-architecture-in-xcode-5-1) – nschum

+0

Google it buddy –

回答

14

Xcode 5.1更改了標準項目設置。其中包括該項目的arm64體系結構 - 但許多第三方項目尚不支持該功能,因此我建議將其從體系結構設置中再次移除(留給您armv7armv7s)。將它保留在有效體系結構設置中,但它指定了它可以運行的體系結構。

它還引入了一些額外的警告的默認激活,如類型轉換爲長警告 - 在這裏相同的計數,當你使用相當一些其他庫(作爲源代碼)時,你可能會得到很多警告,你不能(或不想)做很多事情。您可以爲這些項目再次禁用警告,或選擇不立即更新您的項目設置。

+3

體系結構應重置爲armv7如果你遇到圖書館問題,可以使用armv7s,但是你不應該重置有效的體系結構,因爲應用程序不會在新的iPhone上運行。 – Christian

+0

你說得對 - 我編輯了我的答案。 – TheEye

3

的確XCode現在包含arm64架構。 NSInteger的是完全不同的東西,現在因爲它是在NSObjCRuntime.h定義:

#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64 
typedef long NSInteger; 
typedef unsigned long NSUInteger; 
#else 
typedef int NSInteger; 
typedef unsigned int NSUInteger; 
#endif 

來對付它,你應該提高你的代碼庫。首先,你必須真正一致。僅將NSInteger分配給NSInteger,而不分配給int。避免一切形式的:

int i = [aString integerValue] (as it returns a NSInteger)

NSInteger i = [aString integerValue] (and if it's a long type then you won't have any trouble.)

而且,你可能有另外一個問題是,當你想創建一個從值的字符串。 你可以做的是一樣的東西:

#define cL(v) (long)(v) 
#define cUL(v) (unsigned long)(v) 

NSLog(@"array.count: %ld", cUL(anArray.count)); 

array.count返回下的ARMv7(S)和下arm64一個unsigned long unsigned int類型。通過總是投入一個無符號的長,你不會再面臨任何警告,更重要的是,不會有任何錯誤。

這種「邏輯」已經介紹了蘋果本身的一些高科技會談影片有: https://developer.apple.com/tech-talks/videos/(視頻「架構現代的iOS遊戲」玩弄10m00s視頻)

13

得到了構建設置 - >架構

您可能已經設置了標準體系結構,對吧?

從Xcode 5開始。1標準體系結構包括arm64,您尚未準備好支持。

選擇其他.. 雙擊$(ARCHS_STANDARD)並將其更改爲$(ARCHS_STANDARD_32_BIT)

注:這是一個臨時的解決辦法。您可能正在使用一些不帶64位片的靜態庫。查看是否有可用的,然後將體系結構切換回標準體系結構。

+1

在客戶端演示前2分鐘保存我的屁股並且無法部署到模擬器!謝謝安德魯。 現在回頭來看看爲什麼「多個方法命名'計數不匹配的結果,參數類型...」出現與新的拱門,但不是舊的。 ;-) –

+0

thnQ @Andrew你幫了很多 – ashokdy

+0

Niiii​​iiicccce .. – pnizzle