博客> ios 不同类型报错解决办法收集
ios 不同类型报错解决办法收集
2017-12-12 17:42 评论:0 阅读:632 qianqianzhang
ios 报错解决办法
  • 1 .真机调试 code signing is required for product type 'Application' in SDK 'iOS 9.3’ (就是说代码签名证书不对劲) 解决办法:

1.选择工程->Build Settings -> Code Signing -> Code Signing Identity -> Debug -> Any ios SDK 将选项改为:iPhone Developer

2.重新下载你的证书,或者修改通配符,或者说修改你的appid 。选择工程 -》Bundle Identifier 修改为最新的appid 。造成这种原因是因为你修改了你的app sdk版本。 2.出现( linker command failed with exit code 1)错误总结

1.以如下错误为例,如果是多人开发,你同步完成后发现出现如下的错误。 [html] view plaincopy

  • Undefined symbols for architecture armv7:
  • "_OBJCCLASS$_MyPageLogViewController", referenced from:
  • objc-class-ref in BaiduMobStatAppDelegate.o
  • ld: symbol(s) not found for architecture armv7
  • clang: error: linker command failed with exit code 1 (use -v to see invocation)

错误中出现了“MyPageLogViewController”这个类,你可以找到这个类的.m文件, 查看他的Target Membeship, 如下图

如果没有勾选上,点击勾选。然后编译查看。

    1. 如果是新添加的第三方库,且不是静态库

先重复第一步过程,然后找到 Build settings->Linking->Other Linker Flags

将此属性修改成-all_load 或者 -ObjC ,这个视情况而定。总之可以多试几次。

3.如果添加的是第三方静态库(.a文件)

[html] view plaincopy

  • Undefined symbols for architecture armv7:
  • "_OBJCCLASS$_BaiduMobStat", referenced from:
  • objc-class-ref in BaiduMobStatAppDelegate.o
  • objc-class-ref in MyPageLogViewController.o
  • (maybe you meant: _OBJCCLASS$_BaiduMobStatAppDelegate)
  • ld: symbol(s) not found for architecture armv7
  • clang: error: linker command failed with exit code 1 (use -v to see invocation)

在用到这个库的所有文件中都出现了错误, 如上 BaiduMobStatAppDelegate 类和 MyPageLogViewController类

这种情况就可能是这个静态库路径混乱导致的链接错误

解决方法:Build settings->Search Path->Library Search Paths 添加静态库的相应路径。如下图

如果上面的所有方法都不管用。你可以再试试一下几个方法:

1,看看是不是有新添加的文件跟之前文件同名

2,错误信息中出现了某个类的名字,去原文件中看看#import了哪些第三方库,把这些库挨个注释排除,找到出错的那个库,然后按照官方提供的步骤重新添加一遍。

  1. referenced from: objc-class-ref(导入第三方,例如高德地图,扫描) 首先添加高德地图的时候学要把CoreLocation.framework, CoreText.framework, QuartzCore.framework, SystemConfiguration.framework, Libz.dylib, Libxml.2.2, CoreTelephony.framework这些框架加入到工程中去,但是当我加入后还是报错,显示"_OBJCCLASS$_MAAnnotationView", referenced from: objc-class-ref in MapViewController.o等等错误,弄了好长时间,终于发现原来是再引用地图的类中需要把'.m'改变成为'.mm'文件,另外再导入静态库的时候还是报错了,原因是因为Library Search Paths中加入静态库路径错误,debug中对应的是debug类的文件夹下面"$(SRCROOT)/FinancialProduct/Lib/AMap_iOS_Api_Lib/lib/Debug-iphonesimulator",而release中对应的是release的.a文件"$(SRCROOT)/FinancialProduct/Lib/AMap_iOS_Api_Lib/lib/Release-iphoneos",路径要写正确。 最后要确保再target中的 Build Settings 中的 Valid Architecture 里去掉 armv7s,并且将 Build Action Architecture Only 设置为 NO

3.Bitcode问题(通俗解释:在线版安卓ART模式) 报错如下

ld: warning: directory not found for option ‘-F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/Developer/Library/Frameworks‘ ld: -bundle and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together clang: error: linker command failed with exit code 1 (use -v to see invocation)

Bitcode报错 原因:Xcode7 及以上版本会默认开启 bitcode 。 bitcode具体是什么就不解释了。

解决方法: 1.更新library使包含Bitcode,否则会出现以上的警告。 2.关闭Bitcode,简单粗暴。 Build Settings”->”Enable Bitcode”改成"NO"。

  • 4.项目运行报错如下

    : CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. : CGContextTranslateCTM: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. : CGContextRestoreGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
  • 出错原因:设置app的状态栏样式的使用使用了旧的方式,在info.plist里面设置了View controller-based status bar appearance为NO,默认为YES,一般式iOS6的时候使用这种方式,iOS7,8也兼容,但是到了iOS9就报了警告。 [[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent];

  • 以前我们通过上面代码改变状态了颜色,iOS9以后点进去看api发现如下说明 // Setting the statusBarStyle does nothing if your application is using the default UIViewController-based status bar system. @property(readwrite, nonatomic) UIStatusBarStyle statusBarStyle NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController preferredStatusBarStyle]");
  • (void)setStatusBarStyle:(UIStatusBarStyle)statusBarStyle animated:(BOOL)animated NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController preferredStatusBarStyle]");

解决办法: 修改方式将View controller-based status bar appearance设置为YES,然后使用新的方式来实现状态栏的样式。

  • (UIStatusBarStyle)preferredStatusBarStyle;
  • (UIViewController *)childViewControllerForStatusBarStyle;
  • (void)setNeedsStatusBarAppearanceUpdate

  • 5 directory not found for option问题 警告如下:

  • ld: warning: directory not found for option ‘-F/Applications/Xcode 7.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.0.sdk/Developer/Library/Frameworks‘ 问题原因:Xcode7将framworks位置改变了。

  • 解决方法: 点击项目,选择 Targets->xxxTests 选择build setting ,找到 Frameworks Search Path 或者 Library Search Paths 删除$(SDKROOT)/Developer/Library/Frameworks,或者使用$(PLATFORM_DIR)/Developer/Library/Frameworks替换framworks位置改变

swift版本报错解决办法参考文章:(http://blog.cocoachina.com/article/45318)**

收藏
0
sina weixin mail 回到顶部