我尝试在离子到IOS中构建我的应用程序然而当我尝试离子构建iOS时出现错误。这是错误代码
建立失败
以下构建命令失败:
CompileC 建立/ varfinz.build /调试-iphonesimulator / varfinz.build /对象 - 正常/ I386 / CDVFile.o varfinz / Plugins / org.apache.cordova.file / CDVFile.m正常i386 objective-c com.apple.compilers.llvm.clang.1_0.compiler(1 failure)
错误:命令的错误代码65:带args的xcodebuild: -xcconfig,/用户/洛伦佐/桌面/ varfinz5 /平台/ IOS /科尔多瓦/集结debug.xcconfig,-project,varfinz.xcodeproj,ARCHS = I386,-target,varfinz, - 构型,调试-sdk,iphonesimulator,构建,VALID_ARCHS = I386,CONFIGURATION_BUILD_DIR = /用户/洛伦佐/桌面/ varfinz5 /平台/ IOS /建造/仿真器,SHARED_PRECOMPS_DIR = /用户/洛伦佐/桌面/ varfinz5 /平台/ IOS /建造/ sharedpch
以下是包含错误的代码部分。错误发生在第3行,代码片段为self =(CDVFile *)[super initWithWebView:theWebView]; Xcode说:"没有可见的@interface for CDVPlugin声明选择器initWithWebView
- (id)initWithWebView:(UIWebView*)theWebView
{
self = (CDVFile*)[super initWithWebView:theWebView];
if (self) {
filePlugin = self;
[NSURLProtocol registerClass:[CDVFilesystemURLProtocol class]];
fileSystems_ = [[NSMutableArray alloc] initWithCapacity:3];
// Get the Library directory path
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
self.appLibraryPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"files"];
// Get the Temporary directory path
self.appTempPath = [NSTemporaryDirectory()stringByStandardizingPath]; // remove trailing slash from NSTemporaryDirectory()
// Get the Documents directory path
paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
self.rootDocsPath = [paths objectAtIndex:0];
self.appDocsPath = [self.rootDocsPath stringByAppendingPathComponent:@"files"];
}
return self;
}
答案 0 :(得分:3)
您可以通过两种方式解决此问题:
1- public static string DoSomething(string base = "DEFAULTVALUE")
{
if (base == "DEFAULTVALUE")
{
// Then base was not specified.
}
}
替换[super initWithWebView:theWebView]
。
2-向CDVFile添加编译器标志以禁用ARC,编译器标志为[super init]
从我的观点来看,我推荐第二种解决方案,因为它不会影响代码。
如果您正在寻找一步一步的解决方案,请在Xcode中执行以下操作。
在“CDVFile.m”的右侧,可以添加以下编译器标志
-fno-objc弧
现在,如果您想详细了解问题:
CDVFile是在非ARC环境下构建的,他控制着自己的内存消耗。 但Xcode不允许这样做,因为它使用ARC来控制整个应用程序的内存消耗。 所以解决这个冲突的方法是修改CDVFile代码以使用ARC,或者通过添加编译器标志告诉Xcode你负责这个类的内存管理。
<强>更新强> 注意:每次添加平台时都应该完成上述两种解决方案。
要彻底解决问题,请执行以下操作:
-fno-objc-arc
<platform name="ios">
并将其替换为:<source-file src="src/ios/CDVFile.m"/>
答案 1 :(得分:0)
我间歇性地遇到这个问题。虽然我不能说出问题的根本原因,但以下内容适用于我 - 来自CLI:
cordova platform remove ios
ionic serve
cordova platform add ios