2014-03-13 46 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