错误在iOS 6上运行但不在iOS 7
问题描述:
我想在iOS 6上运行我的项目,并且已经设置了所有适当的生成设置以允许我这样做,但是当我在iOS 6上运行时出现此错误:错误在iOS 6上运行但不在iOS 7
dyld: Symbol not found: _OBJC_CLASS_$_NSURLSession
Referenced from: /var/mobile/Applications/8AC09960-A403-413E-B70A-E03DB2AF5844/Flywheel.app/Flywheel
Expected in: /System/Library/Frameworks/Foundation.framework/Foundation
in /var/mobile/Applications/8AC09960-A403-413E-B70A-E03DB2AF5844/Flywheel.app/Flywheel
是什么给了? iOS 7工作正常。
答
如果您使用的是cocoapods,请检查您的Podfile。它可能有
platform :ios, '7.0'
,而不是
platform :ios, '6.0'
答
NSURLSession
在iOS的7加入任何不当引用它在你的应用程序时,与iOS 6的设备你需要运行将导致此问题使用适当的技巧以确保iOS 6下不会引用该类。
答
NSURLSession
仅适用于iOS7。不幸的是,你将不得不在iOS 6上使用旧的NSURLConnection
。
答
NSURLSession
在iOS 7之上可用。你可以在NSURLSession.h
找到定义。
NS_CLASS_AVAILABLE(10_9, 7_0)
@interface NSURLSession : NSObject
请在检查系统版本或检查此类是否可用之前使用。
if (NSClassFromString(@"NSURLSession") != nil) {
// available
// your code
} else {
// not available
// other solutions
}
UPDATE
说明:
有些朋友认为NSClassFromString()
不建议不用我在这里使用它。
我同意一半。通常,在使用新的实例或操作类时,不建议使用NSClassFromString()
。但我现在用来判断类是否可用(是否为nil
),并且我不会生成带有字符串的类指针。
我相信有时候我们会变得灵活。
无论如何,如果你不喜欢使用NSClassFromString()
,我终于找到了一个更好的办法来检查类是可用的:
if ([NSURLSession class]) {
// available
} else {
// not available
}
在使用'NSURLSession'的地方显示你的代码。 – rmaddy
一种不公平的评论,我不知道它是NSURLSession(我正在导入的库正在使用它)。 – pfrank
什么是您的部署目标设置?如果您想在iOS 6上运行,需要将其设置为6或更少,并且需要为应用中的所有代码(包括您正在导入的库)正确设置它。 –