iOS 报错总结归纳

一、xcode Build 成功,但是不会运行到模拟器

背景:github 上下载一个开源项目,使用了CocoPods

可以编译成功,说明代码是没有问题的,不能运行到模拟器,应该是没有选择正确的 scheme

解决:选择 “Product” >> “Scheme” >> "Edit Scheme" >>  左边 "Run" >> “Info” 选项卡 >> "Executable" >> "你的项目.app"

二、Build warning: directory not found for option “XXX”

编译后出现的警告,没有找到对应的XXX ,这里XXX一般是 Framework 或 Library 的路径,

一般在打开下载的项目会出现,比如我是在打开微信SDK Demo 时出现的。

解决:在项目 Target 选择 Build Settings 选项,找到 Search Paths 下的 Library Search Paths 项和Framework Search Paths(可以用搜索功能快速定位),

OK,展开Library Search Paths 的值,可以看到其中就有警告中没有找到的XXX路径,删掉它就行

三、Error '!obj' trying to fetch default input device's sample rate

背景:使用MPMoviePlayerViewController 播放视频

环境:Mac miniiosSimulator

这个坑爹的问题,是提示你需要给设备插上耳机,准确的说,插上外接的音频输出设备。嗯,插在Mac mini 上,就酱紫。

四、Build Error“openssl/asn1.h”file not found

背景:接入支付宝时出现

这个问题说穿了很简单,“openssl" 整个文件夹代码都拷贝到项目中,找不到文件是路径问题

再看下支付宝的集成文档,里面要提到 在 “Header Search Paths” 增加头文件路径:$(SRCROOT)/项目名称,显然就是解决这个问题的,

但是注意,这里支付宝Demo 的 openssl 文件夹是放在项目的根目录的,对应路径就是 $(SRCROOT)/项目名称,

你的openssl 文件夹是放在根目录的么?反正我不是放在这里,所以路径要根据你的实际情况修改下。

解决:在 “Build Setting” 下 "Header Search Paths" 增加 openssl 文件夹路径,比如我的路径是 $(SRCROOT)/项目名称/library/AliPay

如果有问题,请看下 “

其它补充:这里文件找不到,除了路径问题,还有一个就是 #include<> 和 #include “” 的区别

#include<>  编译器会优先在系统库中查找该文件,一般引用系统库的时候用<>;

#include “”   编译器优先从项目文件中查找,一般自己写的文件用 “”

五、Build Error : Apple Mach-O Linker Error

Build Error :linker command failed with exit code 1 (use -v to see invocation)

网上查了一圈,最有可能的原因有三种,分别如下:

第一种:缺少了 .m 文件的引用,在 “Build Phases" 中的 “Compile Sources" 查看,如果有缺失的.m文件(一般是第三方的文件),添加上去;

第二种:正好和第一种相反,重复引用了相同的文件,请删除相同的引用;

第三种:缺少了 .framework 或 .a 库文件的引用,请确保第三方所需要的库文件已经全部引用,在“Build Phases" 中的 “Link Binary With Libraries" 查看;

除了这三种外,还是其它可能,请参看这里

我是在接入支付宝时出现这个问题,还是和 openssl 有关,查询 openssl ,发现是用C语言写的,在IOS中并不能直接使用 openssl 的源码,是需要编译成为 .a 库文件进行使用的!再回头看下支付宝的demo,里面确实引用了 openssl 编译出来的两个库文件,libssl.a 和 libcrypto.a。

OK,在项目中加入两个库文件,编译通过,知道真相后我的眼泪都要掉下来...

很奇怪为什么要同时引用 openssl 源码和编译后的库文件,缺哪个都有问题?

六、Thread 1:EXC_BAD_ACCESS(code=EXC_I386_GPFLT)

访问了一块不属于你的内存

解决:找到引起错误的变量,尝试修改为其它变量属性,呃,这块知识点有待加强

七、Build Error : apple LLVM 6.1 Error

背景:编译运行外来项目时出现,应该和项目之前的关联路径发生变化有关

解决:有一个简单粗暴的方法,直接删除 Targets 下面的 xxxTests,嗯,右键后选删除。

八、iTunes Connect 上传图片,提示“无法载入您的文件。请再试一次”

背景:图片符合要求,出现此问题

解决:确保图片存储路径和图片名称不包含中文字符!

九、The iOS 8.2 simulator runtime is not available.

Unable to open liblaunch_sim.dylib.  Try reinstalling Xcode or the simulator runtime.

背景:升级Xcode 7 后出现这个问题

解决:

方法一:参看这里

复制 liblaunch_sim.dylib 到有问题的模拟器版本上

找到下面的文件,复制

/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/system/host/liblaunch_sim.dylib

替换下面的文件

/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 8.2.simruntime/Contents/Resources/RuntimeRoot/usr/lib/system/host/liblaunch_sim.dylib

其它模拟器如果有问题,同理替换,路径都基本一样的

然而,这个方法并没有解决我的问题

方法二:

网速好像不错,我重新下载了模拟器版本,这大概是最愚蠢的解决方案

十、Undefined symbols for architecture x86_64: "operator delete[](void*)", referenced from:

[objc]view plaincopy

Undefined symbolsforarchitecturex86_64:

"operator delete[](void*)", referencedfrom:

+[WeChatApiUtilEncodeBase64:] in libWeChatSDK.a(WeChatApiUtil.o)

+[WeChatApiUtilNsDataEncodeBase64:] in libWeChatSDK.a(WeChatApiUtil.o)

+[WeChatApiUtilDecodeWithBase64:] in libWeChatSDK.a(WeChatApiUtil.o)

+[WeChatApiUtilDecodeBase64:] in libWeChatSDK.a(WeChatApiUtil.o)

......

背景:导入第三方库(微信)后编译失败。

解决:添加 libc++ 库即可。

十一、could not launch “XXX” process launch failed security

�背景:Xcode 7.1 真机调试,真机版本9.1

原因�一:包ID匹配而证书不匹配的问题,请确定使用的是开发证书。

解决:切换为正确的开发证书

原因二:9.1下企业应用需要信任开发者描述证书

解决:iphone > 设置 > 通用 > 描述文件 > "你开发用的Apple ID 账号" > 选择信任

解决二:Xcode > Window > Devices > 按住“Ctrl"键点击设备,选"Show Provisioning Profiles" > 删除全部

十二、This application's application-identifier entitlement does not match that of the installed application. These values must match for an upgrade to be allowed.

设备上安装了 Bundle identifier 一样的应用,请先删除。

十三、交易订单处理失败,请稍后再试 ali64

背景:接入支付宝时出现

原因:密钥问题,商户公钥没有上传到支付宝,或者商户密钥被更换过

RSA密钥分 公钥和私钥,请确保目前项目使用的密钥和上传到支付宝的密钥是配对的。

十四、Archive 过程中出现

archive 后 upload 时出现

iOS7 需要添加iPhone5的启动图片支持。Launch Screen File 这个是iOS8后才有的。

十五、Could not find Developer Disk Image

真机测试时出现,Xcode没有真机对应的包。比如:Xcode7.1 最高支持iOS9.1

解决:更新你的xcode版本,或者拷贝对应的支持包到下面的路径

[html]view plaincopy

/Applications(应用程序)/Xcode-beta(右键显示包内容)/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport

附录:

iOS Device Support 10.2 支持包

iOS Device Support 10.1 支持包

iOS Device Support 10.0 支持包

十六、An unknown error message 'DeviceLocked', was received from the device.

接上面 “十五”,如果你导入对应的支持包后,比如10.0的支持包,可能出现这个问题

解决:拔掉数据线,重新插入,简单粗暴。

十七、Upload to app store 过程中出现

1. Archive upload  failed with error

版本号不对,设置一个比 1.4.3 更高的版本号,

新修改xcode 中的版本号,要比 iTunes Connect 中心 》应用的构建版本 最新版本高。

2. This action could not be completed. Try again. (-22421)

原因:

1. 这个问题一般是Apple iTunes connect 抽风,等一下再试,或者使用 Application Loader 上传。

2. iTunes connect 没有找到应用对应的版本号也会出现。比如要上传的版本是2.0.0 版本,但iTunes connect 还没创建出2.0.0版本。

十八、点击状态栏快速返回头部 失效

这个功能是系统默认有的,失效可能是当前页面由多个UITableView组成,系统不知道响应哪一个。

解决:如果是多列表页面,设置当前使用的UITableView.scrollToTop = YES,其它为NO。

十九、Archive failed

.bundle.ltGJwQ/01 for architecture arm64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

一般是第三方库的问题,可能它没有支持gitcode,尝试更换库或者关闭 gitcode

二十、iOS10权限适配

This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.

背景:iOS10后调用相机、相册应用直接挂掉。查了下才知道需要加权限使用说明。

解决:在info.plist 文件中加上对应权限使用说明。

[html]view plaincopy

NSAppleMusicUsageDescription

App需要您的同意,才能访问媒体资料库

NSBluetoothPeripheralUsageDescription

App需要您的同意,才能访问蓝牙

NSCalendarsUsageDescription

App需要您的同意,才能访问日历

NSCameraUsageDescription

App需要您的同意,才能访问相机

NSHealthShareUsageDescription

App需要您的同意,才能访问健康分享

NSHealthUpdateUsageDescription

App需要您的同意,才能访问健康更新

NSLocationAlwaysUsageDescription

App需要您的同意,才能始终访问位置

NSLocationUsageDescription

App需要您的同意,才能访问位置

NSLocationWhenInUseUsageDescription

App需要您的同意,才能在使用期间访问位置

NSMicrophoneUsageDescription

App需要您的同意,才能访问麦克风

NSMotionUsageDescription

App需要您的同意,才能访问运动与健身

NSPhotoLibraryUsageDescription

App需要您的同意,才能访问相册

NSRemindersUsageDescription

App需要您的同意,才能访问提醒事项

二十一、Build 安装到模拟器时 Devices NO Such File Or directory

描述:删除应用后重新安装,第一次就可以正常使用,第二次编译运行后就会报这个问题。

解决:模拟器菜单》hardware 》reboot  即可

二十二、Failed to load Info.plist from bundle at path......

解决:clear项目,重新运行

二十三、could not attach to pid:

解决:clear 项目,重启模拟器,重新编译,再次运行

二十四、pngcrush caught libpng error

解决:

1、确定图片格式没有被修改过,比如jpg图片改后缀名为png,这样是不行滴;

2、确定图片是正常生成出来的,不是切图之类搞出来的;

3、用图片处理工具重新处理图片

异常相关

零、设置异常断点捕获 Exception Breakpoint

Xcode 打开 Breakpoint 断点面板,增加一个全局的断点,这样可以定位到大部分的异常抛出位置

一、lb: library not found for -| XXX

编译的时候出现,原因是编译时找不到需要的库链接

解决:在项目Target 选择要编译的 target ,选择 General 选项,下面有个 “Linked Frameworks and Libraries” , 添加缺失的库链接

其它:如果是lb:library not found for -|Pods.a

说明项目使用CocoaPods作为依赖管理工具,负责管理项目中的第三方开源代码,libPods.a 是CocoaPods 将所有第三方编译合成的文件,

当IOS项目使用使用CocoaPods,我们要打开项目工程的是 .xcworkspace 文件,而不是 .xcodeproj 文件,显然这是个菜鸟问题。

二、Error Domain=NSURLErrorDomain Code=-1005 "The network commection was lost"

背景:模拟器、使用 AFNetworking 请求数据

切换不同网络连接后会出现

解决:一般重启模拟器可以解决;如果没有解决,可以重置模拟器内容

选 IOS Simulator 》Reset Content and Settings 》Reset

三、Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/JavaScript"

背景:模拟器、使用 AFNetworking 请求数据

显然,这是因为请求设置的 content-type 和 服务器返回的 content-type 不相同,服务器用的是 content-type: text/javascript

解决:设置下

[objc]view plaincopy

afManager.responseSerializer.acceptableContentTypes= [NSSetsetWithObject:@"text/javascript"];

四、Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFArray replaceObjectAtIndex:withObject:]: mutating method sent to immutable object'

初始化数据后使用 mutableCopy 方法

[objc]view plaincopy

mArray = [[userDefaultsobjectForKey:@"test_data"]mutableCopy];

五、[NSNull count]: unrecognized selector sent to instance 0x10d76d4c0

这是个坑爹的问题,查了好久才发现原因

服务器接口返回数据中,有空值,有空值,有空值,重要事情说三遍!

比如服务器返回 {"title":""}

在 oc 中,会转化为 NSNull 值,而不是一个空的 NSString 字符串

这个和Java转化为空的String字符串是完全不同的

oc 中,NSNull 值不能赋给其它变量,会报错

解决:对可能出现空值的地方进行判断处理,如果可以的话,最好服务器接口不要传空值,改为一个默认值更佳。

[objc]view plaincopy

if([dictobjectForKey:@"title"] == [NSNullnull]) {

NSLog("数据为空");

}

update 2015.08.17

没有最坑爹,只有更坑爹!我发现有个接口查不到数据居然仅回传 “[ ]” 这几个字符!!!写接口的你过来,看我不打屎你。

这个用上面的方法是不能检测出来的,因为压根就没东西,考虑到正常的接口JSON都是字典类型,改为下面的方法判断:

[objc]view plaincopy

if([respObjisKindOfClass:[NSArrayclass]]) {

NSLog(@"无数据");

}

显然,“[ ]” 转为数组,“{ }” 转为字典。

六、Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'attempt to delete row 0 from section 0 which only contains 0 rows before the update'

使用 UITableView 时出现,问题出在 section 和 rows 数量与界面中的数量不符,比如:数据中存在 section=2,rows=2,但界面中没有这个分组(行),这时候对该组(行)进行操作就会出现异常。

常发生在 insertRowsAtIndexPaths 和 deleteRowsAtIndexPaths 以及 刷新 tableView数据源后。

解决:保持界面与数据源同步

七、unknown type name 'CGFloat'

No type or protocol named 'UITableViewDataSource'

导入 #import

这种类似问题一律导入 kit

八、Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (JSON text did not start with array or object and option to allow fragments not set.) UserInfo=0x7faad1f2b8b0 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}

背景:�模拟器、使用 AFNetworking 请求数据

原因:一般是服务器返回的数据格式有问题(不是JSON�格式)

解决:

需要确定到底是返回什么样的数据,然后才能正确的解决问题

[objc]view plaincopy

afManager = [AFHTTPRequestOperationManagermanager];

// 使用 AFHTTPRequestSerializer/AFHTTPResponseSerizlizer 替换 AFJSONRequestSerializer/AFJSONResponseSerializer

afManager.requestSerializer= [AFHTTPRequestSerializerserializer];

afManager.responseSerializer= [AFHTTPResponseSerializerserializer];

[afManagerGET:@"you url"parameters:nilsuccess:^(AFHTTPRequestOperation*operation,idrespObj) {

// 将获取到的数据转为字符串输出

NSData*data = respObj;

NSString*resultString =  [[NSStringalloc]initWithData:dataencoding:NSUTF8StringEncoding];

NSLog(@"resultString = %@", resultString);

}failure:^(AFHTTPRequestOperation*operation,NSError*error) {

NSLog(@"error: %@", error);

}];

OK,看下输出的结果是什么,再做进一步操作。

比如我打印出来的数据是一个网页的HTML代码,说明接口有问题的,联系后台的同事修改。

(补充:这个接口在网页端返回的是JSON数据;在移动端用IOS源生NSMutableURLRequest 请求也返回JSON数据;用AFNetworking 返回网页;

经查:是后台过滤器问题,默认将移动端请求导到某个页面)

如果返回的不是JSON,是字符串数据,可以用上面的方法,转为字符串再进一步处理。

或者尝试使用下面方法

[objc]view plaincopy

afManager.requestSerializer= [AFHTTPRequestSerializerserializer];

AFJSONResponseSerializer*jsonResponseSerializer = [AFJSONResponseSerializerserializerWithReadingOptions:NSJSONReadingAllowFragments];

jsonResponseSerializer.acceptableContentTypes= [NSSetsetWithObject:@"text/html"];

afManager.responseSerializer= jsonResponseSerializer;

参看这里

http://stackoverflow.com/questions/26233611/error-domain-nscocoaerrordomain-code-3840-the-operation-couldn-t-be-completed-u

http://stackoverflow.com/questions/27915879/apns-error-domain-nscocoaerrordomain-code-3840

九、use of undeclared identifier KUTTypeImage

解决:

1. 导入库  MobileCoreServices.framework

2. 引用 import

[objc]view plaincopy

#import 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,599评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,513评论 25 707
  • 首先和朋友们说声抱歉,最近为生计忙碌,文章更新速度大大降低。有些话这么说的,「宁缺毋滥」、「欲速则不达」,我相信我...
    种子实验室李刚阅读 294评论 1 4
  • 一、前言 在局域网中实现流媒体的播放有2种主要方式,Airplay和DLNA。对于iOS系统,天生带了Airpla...
    RDuwan阅读 2,454评论 3 6
  • 斜峰处,幽谷石径深,薄雾緾绕,忽惊鸿皓,斜阳照,望穿天涯谷,红蓝夕过,南山松下,银冉太极桩,笑傲经年浮桥短,斜峰别...
    我就是林夕阅读 501评论 0 0