iOS学习 导入第三方框架 常见问题汇总

问题1:ARC与MRC混编
可以给ARC项目添加MRC标记(-fno-objc-arc),也可以给MRC项目添加ARC标记(-fobjc-arc)

问题2:OC委托报错 Existing instance variable 'middleMan' for property 'middleMan' with assign
@interface Student : NSObject { id<Question> delegate; } 改为:

@interface Student : NSObject { __unsafe_unretained id<Question> delegate; }

问题3:xcode6 使用MJRefresh,Too many arguments to function call, expected 0, have *
将XCode升级到6后,报Too many arguments to function call, expected 0, have *,在XCode5.1里能编译通过的,到xcode6就报错

objc_msgSend(self.beginRefreshingTaget, self.beginRefreshingAction, self);

Too many arguments to function call, expected 0, have *

问了下度娘,

选中项目 - Project - Build Settings - ENABLE_STRICT_OBJC_MSGSEND 将其设置为 NO 即可

问题4:Undefined symbols for architecture i386: 问题
Undefined symbols for architecture i386:
"_sqlite3_backup_finish", referenced from:
_loadOrSaveDb in FMDatabase+InMemoryOnDiskIO.o
"_sqlite3_backup_init", referenced from:
_loadOrSaveDb in FMDatabase+InMemoryOnDiskIO.o
"_sqlite3_backup_step", referenced from:
_loadOrSaveDb in FMDatabase+InMemoryOnDiskIO.o
"_sqlite3_bind_blob", referenced from:
-[FMDatabase bindObject:toColumn:inStatement:] in FMDatabase.o
"_sqlite3_bind_double", referenced from:
-[FMDatabase bindObject:toColumn:inStatement:] in FMDatabase.o
"_sqlite3_bind_int", referenced from:
-[FMDatabase bindObject:toColumn:inStatement:] in FMDatabase.o
"_sqlite3_bind_int64", referenced from:
-[FMDatabase bindObject:toColumn:inStatement:] in FMDatabase.o
"_sqlite3_bind_null", referenced from:
-[FMDatabase bindObject:toColumn:inStatement:] in FMDatabase.o
"_sqlite3_bind_parameter_count", referenced from:
-[FMDatabase executeQuery:withArgumentsInArray:orDictionary:orVAList:] in FMDatabase.o
-[FMDatabase executeUpdate:error:withArgumentsInArray:orDictionary:orVAList:] in FMDatabase.o
"_sqlite3_bind_parameter_index", referenced from:
-[FMDatabase executeQuery:withArgumentsInArray:orDictionary:orVAList:] in FMDatabase.o
-[FMDatabase executeUpdate:error:withArgumentsInArray:orDictionary:orVAList:] in FMDatabase.o

这个错误的发生原因一般是“XXX”这个文件(类库)虽然引入了工程中,但是由于种种原因(常见于多人开发,svn同步不规范)导致“XXX”并未被添加到project.pbxproj这个文件中。

解决方法是点击工程,在targets界面中找到Build Phases,根据提示信息“XXX”来判断缺少什么文件,一般如果缺少自定义的文件,XXX会是缺少的类名,那么就在Complie Sources中加入该文件。如果缺少类库,则在Link Binary With Libraries中加入该类库。

而上面问题是因为少在Link Binary With Libraries 中加入 libsqlite3.dylib ,添加后就可以编译通过。

Xcode 7 缺少 *.dylib库的解决方法
Xcode7中 Link Binary With Libraries 没有 *.dylib库,只能找到对应的 *.tbd,但不能代替使用,通过查找资料,尝试后得到以下两种解决方法。

1.Link Binary With Libraries 手动添加
首先点击 “+”


屏幕快照 2017-05-12 下午1.45.32.png

显示搜索添加页面,点击 Add Other

屏幕快照 2017-05-12 下午1.46.23.png

出现文件目录页面,快捷键 CMD+Shift+G (Go to the folder),输入/usr/lib,添加你需要的 *.dylib。

屏幕快照 2017-05-12 下午1.46.44.png

2.Build Phases 配置
project -> Build Phases ->Linking -> Other Linker Flag

添加 -l< 所需 dylib 的名称 >

例如:libsqlite3.dylib -> -lsqlite3

问题5:在编译RegexKitLite的时候,报错如下:
Undefined symbols for architecture i386:
"_uregex_open", referenced from:
_rkl_getCachedRegex in RegexKitLite.o
"_uregex_groupCount", referenced from:
_rkl_getCachedRegex in RegexKitLite.o
"_uregex_setText", referenced from:
_rkl_setCachedRegexToString in RegexKitLite.o

解决办法:
在项目的编译设置中找到Build settings->Linking->Other Linker Flags,然后在后面字段空白处双击,
添加“-licucore”就可以了。

屏幕快照 2017-05-12 下午1.47.12.png

问题6: "OBJC_CLASS$MFMessageComposeViewController", referenced from:
l_OBJC
$CATEGORY_MFMessageComposeViewController$_BlocksKit in BlocksKit(BlocksKit)
原因:
这是编译器找不到符号定义,通常这意味着某些framework没有加入项目中
解决参考:
解读信息,是因为找不到叫MFMessageComposeViewController的ObjC类。
查找MFMessageComposeViewController的信息,得知其定义在MessageUI.framework中,将其加入到项目中即可
问题7:"OBJC_CLASS$_CTTelephonyNetworkInfo", referenced from:
解决方法:在build phases里加一下 CoreTelephony.framework就可以了

问题8: Xcode "_deflate", referenced from:
解决办法:添加libz.dylib类库

问题9:iOS真机调试的时候报错:/libUPPayPlugin.a(UPJSON.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64
error: linker command failed with exit code 1 (use -v to see invocation)
解决办法:看看是不是bitcode开着呢,把bitcode改为no

屏幕快照 2017-05-12 下午1.47.52.png

问题10:
XCTest/XCTest.h not found on old projects built in Xcode
问题描述:
fatal error: 'XCTest/XCTest.h' file not found

import 解决方法: 在报错的Target中的Building settings中FRAMEWORK_SEARCH_PATHS添加$(PLATFORM_DIR)/Developer/Library/Frameworks

XCTest/XCTest.h <wbr>not <wbr>found <wbr>on <wbr>old <wbr>projects <wbr>built <wbr>in <wbr>Xcode

屏幕快照 2017-05-12 下午1.48.16.png

问题11:添加第三方类库造成的linker command failed with exit code 1 (use -v to see invocation)的错误调试
linker command failed with exit code 1 (use -v to see invocation)这个错误貌似遇见并不止一次,当我想用某个第三方类库的时候(如SBJson),我直接把类库文件copy到工程目录里面,然后一编译就出现这样错误(并不是一定会出这样错误),开始以为是网上下载的类库本身问题,所以重新找类库或者其他方式将它添加进去,只要不出错就行,也一直没有深入了解根本问题,今天在给工程添加一个FMDB(SQLIte第三方类库)文件编译时又出现这种错误,一开始以为工程问题,但是新建工程后还是出现这个问题,经过网上查找,得到了解决办法;

Undefined symbols for architecture i386:  
  "_OBJC_CLASS_$_FMDatabase", referenced from:  
      objc-class-ref in ViewController.o  
ld: symbol(s) not found for architecture i386  
clang: error: linker command failed with exit code 1 (use -v to see invocation)  
屏幕快照 2017-05-12 下午1.49.30.png

在网上得到解决办法是:
在工作左边导航栏Target-->Build Phases-->compile Sources中,第三库库的所有.m文件都添加到里面,然后编译通过了;

屏幕快照 2017-05-12 下午1.49.49.png

添加.m文件

屏幕快照 2017-05-12 下午1.49.55.png

根据对比可以看见 in FMDBTest,FMDBTest的Target里添加进去了了一些.m文件

屏幕快照 2017-05-12 下午1.50.01.png

对于以上错误,根据网友解答我的理解是
我们在使用这些第三方类库文件时直接将其拖拽到工程之中,编译的的时候Xcode也没有自动引用,所以造成这样错误,这就需要我们手动添加。假如我们在工程中新建某个文件就不会出现这样问题;

问题12:
关于导入文件错误:too many errors emitted, stopping now [-ferror-l
解决方法:build settings 里 Compile Sources As选项改为Objective C++。

问题13:dyld: Library not loaded: @rpath/XCTest.framework/XCTest
Referenced from: /var/containers/Bundle/Application/B5212ED6-4ECE-4BCC-A52A-689CBD400E44/02 - album.app/02 - album
Reason: image not found
解决方法:多加了两个m文件,下图中m文件删除即可

屏幕快照 2017-05-12 下午1.51.55.png

问题14:
Unsupported compiler 'com.apple.compilers.llvmgcc42' selected for architecture 'armv7'
解决方法:
Change your compiler for C/C++/ObjectiveC Go to Build Settings->Build OPtions->compiler for C/C++/ObjectiveC; select Default(Apple LLVM5.0)

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

推荐阅读更多精彩内容

  • 一、报错与警报 1、错误代码:No architectures to compile for (ONLY_ACTI...
    啊左阅读 12,367评论 11 27
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,066评论 4 62
  • Day 1 馒头君好像又感冒了。仿佛是意料之中的事。 上个礼拜就感觉他讲话声音有些闷闷的,感觉鼻子塞住了。前天晚上...
    洁瑜GW阅读 1,084评论 0 0
  • 我住的这一幢楼,西单元一楼,住一个单身老头。听母亲说姓高,退休教师。戴黑边眼镜,面容黑而枯瘦,弯腰塌背,神情冷漠。...
    清和qinghe阅读 538评论 2 3
  • 慢慢地积累 傻傻的坚持 偷着乐儿 相信奇迹的人 总会遇见奇迹 一点一滴的成长 长成自己喜欢的模样儿 有血有肉 枝繁...
    丹丹是个胆小鬼阅读 341评论 2 9