我知道这意味着第3方组件不会在模拟器上运行:
ld: warning: ignoring file /MyApp/SomeComponent.include/SomeComponent.framework/SomeComponent, missing required architecture i386 in file /MyApp/SomeComponent.include/SomeComponent.framework/SomeComponent (2 slices)
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_SomeComponent", referenced from:
objc-class-ref in MyViewController.o
ld: symbol(s) not found for architecture i386
但是,我不想被排除在模拟器上再次运行该应用程序之外。仅当在应用程序的特定部分中按下按钮时,才需要第三方组件。我仍然希望能够在模拟器中运行其余的应用程序。
如果我在模拟器中运行,如何让编译器忽略这一点?
最佳答案
您可以使用该框架有条件地编译代码:
#if !TARGET_IPHONE_SIMULATOR
// Code using "SomeComponent" that should be compiled for iOS device only ...
#endif
或者,您可以“弱链接”该框架(如
"Using Weakly Linked Classes in iOS"并检查可用性
类在运行时:
if ([SomeComponent class]) {
// Create an instance of the class and use it.
} else {
// Alternate code path to follow when the
// class is not available.
}