iOS 常见问题汇总

Xcode debug时如何查看崩溃堆栈:First throw call stack不打印方法名

解决方案:
1.定义异常捕获函数
void uncaughtExceptionHandler(NSException *exception) {
NSLog(@“%@“, exception);
NSLog(@“%@“, [excepiton callStackSymbols);
}
在程序初始化的时候调用捕获方法:NSSetUncaughtExceptionHandler
NSSetUncaughtExceptionHandler(& uncaughtExceptionHandler)

2.全局断点
3.at
os符号化
比如解析上面的0x00000001000aa48c地址
xcrun atos -o StoreFinder.app.dSYM/Contents/Resources/DWARF/StoreFinder -arch arm64 -l 0x00000001000aa48c

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

iOS 常见问题汇总_第1张图片
905487-20160309212219304-1424876904.png

ld:5 duplicate symbols for architecture x86_64: ======>>>>这行文字的意思在x86_64平台上编译的时候有5个重复的元素

fatal error: 'XCTest/XCTest.h' file not found

在报错的Target中的Building settings中FRAMEWORK_SEARCH_PATHS添加$(PLATFORM_DIR)/Developer/Library/Frameworks

thread 1:exc_bad_access(code=1,address=0x70000008) 怎么确定问题

这种错误通常是内存管理的问题,一般是访问了已经释放的对象导致的,可以开启僵尸对象(Zombie Objects)来定位问题:
在Xcode的菜单:
Product->Scheme->Edit Scheme->Run ???.app
右边的选项中,选中Enable Zombie Objects

开启该选项后,程序在运行时,如果访问了已经释放的对象,则会给出较准确的定位信息,可以帮助确定问题所在。

该功能的原理是,在对象释放(retainCount为0)时,使用一个内置的Zombie对象,替代原来被释放的对象。无论向该对象发送什么消息(函数调用),都会触发异常,抛出调试信息。

记得在问题被修复后,关闭该功能

libxml/HTMLparser.h' file not found。

search "Header Search Paths"并expand it,对于"debug" and "release"node,均通过click "+" button来添加一个value为"${SDK_DIR}"/usr/include/libxml2的item (注意:该值是带有双引号的)

,Xcode编译出现Link错误,出现"duplicate symbols for architecture i386 clang"提示.

问题:链接时,项目有重名文件.
解决:
根据错误提示,做如下检查:
1.Taraget->Build Settings->Link Binary With Libraries检查是否有重复lib.
2.全工程搜索下重名文件,决定如何删除.

关于Category位于静态库时,引用该静态库的工程使用Category,出现"unrecognized selector sent to class"提示.

问题:标准UNIX静态库与Objective-C之间Linker的差异.在标准的UNIX静态库内,linker symbol是依照每一个类别而产生的,但由于Category并没有真正产生一个类别,所以出错.
解决:
1.在该静态库的Taraget->Build Settings->Other Linker Flags->加上 -ObjC.
2.在使用该静态库的工程Taraget->Build Settings->Other Linker Flags->加上-all_load或-force_load

编译warning:ld: warning: directory not found for option '-L'.

问题:通常是Path问题.

解决:
Taraget->Build Settings->Library Search Paths 和 Framework Search Paths,删掉编译报warning的路径即OK

引入(带源码的)静态库所需配置

步骤:
1.Add Files to.. 加入静态库的.xcodeproj 文件,不要勾选Copy Items.. 选项。(可以先把源代码项目先复制到使用项目文件夹下)
2.Target->Build Phases->Target Dependecies->加静态库 && Link Binary With Libraries->加静态库.
3.配置静态库头文件路径,在Taraget->Build Settings->User Header Search Paths->配上静态库的物理路径.

[错误tips: 若出现加入的.xcodeproj无法展开,则在Xcode中关闭静态库项目即可]

PS:只有.a 和 .h的静态库,则直接拖入项目即可。

OBJC_CLASS$_MYIntroductionPanel", referenced from:问题

打开项目targets-->build phases-->

检查Compile Sources中是否有缺少.m文件
检查link binary with libraries中是否缺少依赖库,或者根本忘了导入库

网络请求错误

-1002 请求中包含文字 解决方案 URL utf8一下,或改成post请求
3840 接口错误,或者服务器返回的数据格式有误
1011 1.url写错了,2参数的内容写错了
1016 "The parameters argument is not valid JSON.”

你可能感兴趣的:(iOS 常见问题汇总)