iOS學(xué)習(xí) 導(dǎo)入第三方框架 常見問題匯總

問題1:ARC與MRC混編
可以給ARC項(xiàng)目添加MRC標(biāo)記(-fno-objc-arc)扛伍,也可以給MRC項(xiàng)目添加ARC標(biāo)記(-fobjc-arc)

問題2:OC委托報(bào)錯(cuò) 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升級(jí)到6后嫂便,報(bào)Too many arguments to function call, expected 0, have *绽媒,在XCode5.1里能編譯通過的曙求,到xcode6就報(bào)錯(cuò)

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

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

問了下度娘束昵,

選中項(xiàng)目 - Project - Build Settings - ENABLE_STRICT_OBJC_MSGSEND 將其設(shè)置為 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

這個(gè)錯(cuò)誤的發(fā)生原因一般是“XXX”這個(gè)文件(類庫)雖然引入了工程中绍载,但是由于種種原因(常見于多人開發(fā),svn同步不規(guī)范)導(dǎo)致“XXX”并未被添加到project.pbxproj這個(gè)文件中两波。

解決方法是點(diǎn)擊工程瞳步,在targets界面中找到Build Phases,根據(jù)提示信息“XXX”來判斷缺少什么文件腰奋,一般如果缺少自定義的文件单起,XXX會(huì)是缺少的類名,那么就在Complie Sources中加入該文件劣坊。如果缺少類庫嘀倒,則在Link Binary With Libraries中加入該類庫。

而上面問題是因?yàn)樯僭贚ink Binary With Libraries 中加入 libsqlite3.dylib 局冰,添加后就可以編譯通過测蘑。

Xcode 7 缺少 *.dylib庫的解決方法
Xcode7中 Link Binary With Libraries 沒有 *.dylib庫,只能找到對(duì)應(yīng)的 *.tbd康二,但不能代替使用碳胳,通過查找資料,嘗試后得到以下兩種解決方法赠摇。

1.Link Binary With Libraries 手動(dòng)添加
首先點(diǎn)擊 “+”


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

顯示搜索添加頁面固逗,點(diǎn)擊 Add Other

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

出現(xiàn)文件目錄頁面,快捷鍵 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的時(shí)候洽故,報(bào)錯(cuò)如下:
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

解決辦法:
在項(xiàng)目的編譯設(shè)置中找到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)
原因:
這是編譯器找不到符號(hào)定義隘弊,通常這意味著某些framework沒有加入項(xiàng)目中
解決參考:
解讀信息哈踱,是因?yàn)檎也坏浇蠱FMessageComposeViewController的ObjC類。
查找MFMessageComposeViewController的信息梨熙,得知其定義在MessageUI.framework中开镣,將其加入到項(xiàng)目中即可
問題7:"OBJC_CLASS$_CTTelephonyNetworkInfo", referenced from:
解決方法:在build phases里加一下 CoreTelephony.framework就可以了

問題8: Xcode "_deflate", referenced from:
解決辦法:添加libz.dylib類庫

問題9:iOS真機(jī)調(diào)試的時(shí)候報(bào)錯(cuò):/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 解決方法: 在報(bào)錯(cuò)的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)的錯(cuò)誤調(diào)試
linker command failed with exit code 1 (use -v to see invocation)這個(gè)錯(cuò)誤貌似遇見并不止一次咽扇,當(dāng)我想用某個(gè)第三方類庫的時(shí)候(如SBJson)邪财,我直接把類庫文件copy到工程目錄里面,然后一編譯就出現(xiàn)這樣錯(cuò)誤(并不是一定會(huì)出這樣錯(cuò)誤)质欲,開始以為是網(wǎng)上下載的類庫本身問題树埠,所以重新找類庫或者其他方式將它添加進(jìn)去,只要不出錯(cuò)就行嘶伟,也一直沒有深入了解根本問題怎憋,今天在給工程添加一個(gè)FMDB(SQLIte第三方類庫)文件編譯時(shí)又出現(xiàn)這種錯(cuò)誤,一開始以為工程問題九昧,但是新建工程后還是出現(xiàn)這個(gè)問題绊袋,經(jīng)過網(wǎng)上查找,得到了解決辦法耽装;

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

在網(wǎng)上得到解決辦法是:
在工作左邊導(dǎo)航欄Target-->Build Phases-->compile Sources中愤炸,第三庫庫的所有.m文件都添加到里面期揪,然后編譯通過了掉奄;

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

添加.m文件

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

根據(jù)對(duì)比可以看見 in FMDBTest,FMDBTest的Target里添加進(jìn)去了了一些.m文件

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

對(duì)于以上錯(cuò)誤,根據(jù)網(wǎng)友解答我的理解是
我們?cè)谑褂眠@些第三方類庫文件時(shí)直接將其拖拽到工程之中凤薛,編譯的的時(shí)候Xcode也沒有自動(dòng)引用姓建,所以造成這樣錯(cuò)誤,這就需要我們手動(dòng)添加缤苫。假如我們?cè)诠こ讨行陆硞€(gè)文件就不會(huì)出現(xiàn)這樣問題速兔;

問題12:
關(guān)于導(dǎo)入文件錯(cuò)誤:too many errors emitted, stopping now [-ferror-l
解決方法:build settings 里 Compile Sources As選項(xiàng)改為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
解決方法:多加了兩個(gè)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)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末涣狗,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子舒憾,更是在濱河造成了極大的恐慌镀钓,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件镀迂,死亡現(xiàn)場(chǎng)離奇詭異丁溅,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)探遵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門窟赏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來妓柜,“玉大人,你說我怎么就攤上這事涯穷」髌” “怎么了?”我有些...
    開封第一講書人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵拷况,是天一觀的道長塌衰。 經(jīng)常有香客問我,道長蝠嘉,這世上最難降的妖魔是什么最疆? 我笑而不...
    開封第一講書人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮蚤告,結(jié)果婚禮上努酸,老公的妹妹穿的比我還像新娘。我一直安慰自己杜恰,他們只是感情好获诈,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著心褐,像睡著了一般舔涎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上逗爹,一...
    開封第一講書人閱讀 52,184評(píng)論 1 308
  • 那天亡嫌,我揣著相機(jī)與錄音,去河邊找鬼掘而。 笑死挟冠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的袍睡。 我是一名探鬼主播知染,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼斑胜!你這毒婦竟也來了控淡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤止潘,失蹤者是張志新(化名)和其女友劉穎掺炭,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體覆山,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡竹伸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勋篓。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吧享,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出譬嚣,到底是詐尸還是另有隱情钢颂,我是刑警寧澤,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布拜银,位于F島的核電站殊鞭,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏尼桶。R本人自食惡果不足惜操灿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望泵督。 院中可真熱鬧趾盐,春花似錦、人聲如沸小腊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秩冈。三九已至本缠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間入问,已是汗流浹背丹锹。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留队他,地道東北人卷仑。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像麸折,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子粘昨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 一张肾、報(bào)錯(cuò)與警報(bào) 1芭析、錯(cuò)誤代碼:No architectures to compile for (ONLY_ACTI...
    啊左閱讀 12,384評(píng)論 11 27
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件吞瞪、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,118評(píng)論 4 61
  • Day 1 饅頭君好像又感冒了馁启。仿佛是意料之中的事。 上個(gè)禮拜就感覺他講話聲音有些悶悶的,感覺鼻子塞住了惯疙。前天晚上...
    潔瑜GW閱讀 1,090評(píng)論 0 0
  • 我住的這一幢樓翠勉,西單元一樓,住一個(gè)單身老頭霉颠。聽母親說姓高对碌,退休教師。戴黑邊眼鏡蒿偎,面容黑而枯瘦朽们,彎腰塌背,神情冷漠诉位。...
    清和qinghe閱讀 548評(píng)論 2 3
  • 慢慢地積累 傻傻的堅(jiān)持 偷著樂兒 相信奇跡的人 總會(huì)遇見奇跡 一點(diǎn)一滴的成長 長成自己喜歡的模樣兒 有血有肉 枝繁...
    丹丹是個(gè)膽小鬼閱讀 346評(píng)論 2 9