引用自定義的framework

關於靜態庫引用文件
若是但願你的工程能在將來能導出成靜態庫,那麼在你編寫的時候要遵循靜態庫引用原則,使用這種方式。
注意:這種引用方式必須在你的Products下靜態庫成黑色時候,才能編譯經過。
使用:出現問題
一、正確引用頭文件方法:
二、關於找不到文件的報錯:直接看下邊
分析:
關於第三方庫找不到文件的提示錯誤。簡單補充下吧,別走彎路。
首先你要肯定這個錯誤產生的緣由:大體分兩種,
一:你作的項目缺失文件,百度下,加入就解決了;
二:你引入的第三方框架發生找不到文件錯誤:這樣的結果分兩種:
2、一:開發第三方框架的程序人員沒有作好本身的框架。尤爲是在生成框架的時候,沒有設置好自身屬性。致使使用者用的時候出現找不到文件錯誤,最後迫使使用者不得不去改本身的工程配置。
2、二:你在引入第三方框架的時候,少引用了文件。
 
 
編譯的framework,真機版只能真機使用,模擬版,只能模擬版使用,並且選擇了不一樣的設備也會有影響。
分析緣由:
在咱們生成靜態庫的時候,咱們選擇的是iPad Retina。也就是說這個靜態庫在引用的時候,必須也是iPad Retina。不然Xcode編譯器會找不到文件所在。
你們能夠實驗下,在iPad Retina下導出靜態庫,在其餘工程使用的時候,若是用iPad Retina跑就沒有錯誤。若是選擇其餘設備就會提示找不到文件。
 
兼容所有設備解決方法:改下靜態庫的兼容屬性。Target: -> Build Settings ->  Architectures -> Build Active Architecture Only 全改爲NO;
Build Active Architecture Only
這個屬性設置爲yes,是爲了debug的時候編譯速度更快,它只編譯當前的architecture版本,因此會報錯編譯不到文件,出錯("_OBJC_CLASS_$_xxxxxx", referenced from:)       
而設置爲no時,會編譯全部的版本,這樣就解決編譯出錯的問題了。      
這個是設備對應的architecture:
armv6:iPhone 2G/3G,iPod 1G/2G
armv7:iPhone 3GS/4/4s,iPod 3G/4G,iPad 1G/2G/3G
armv7s:iPhone5, iPod5
arm64:iPhone5s
編譯出的版本是向下兼容的,好比你設置此值爲yes,用iphone4編譯出來的是armv7版本的,iphone5也能夠運行,可是armv6的設備就不能運行。
好了,你分析完後就好辦了,咱們作的這個靜態庫沒有設置本身的兼容屬性,因此就照成了這種錯誤。在iPad Retina的模擬器上跑就正常,換成其餘的模擬設備就報錯。因此改下其屬性就能解決。
Target: -> Build Settings ->  Architectures -> Build Active Architecture Only 全改爲NO;
關於製做靜態庫兼容多版本的設置:
相關文章
相關標籤/搜索