十、关于第三方库找不到文件的提示错误。简单补充下吧,别走弯路。
首先你要肯定这个错误产生的缘由:大体分两种,
一:你作的项目缺失文件,百度下,加入就解决了;
二:你引入的第三方框架发生找不到文件错误:这样的结果分两种:
2、一:开发第三方框架的程序人员没有作好本身的框架。尤为是在生成框架的时候,没有设置好自身属性。致使使用者用的时候出现找不到文件错误,最后迫使使用者不得不去改本身的工程配置。
2、二:你在引入第三方框架的时候,少引用了文件。
好了,你分析完后就好办了,咱们作的这个静态库没有设置本身的兼容属性,因此就照成了这种错误。在iPad Retina的模拟器上跑就正常,换成其余的模拟设备就报错。因此改下其属性就能解决。
Target: -> Build Settings -> Architectures -> Build Active Architecture Only 全改为NO;
《插不了图片了。楼下8楼找吧》
分析缘由:
在咱们生成静态库的时候,咱们选择的是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的设备就不能运行。
真机版和模拟器版的库合并解决方法:在framework文件夹下,你会看到一个白板文件,这个文件名和的的framework静态库名相同,只是没有后缀名。 这个文件在被引入到其余工程时候是看不见的。只有在Show In Finder下能看到。
打开终端,输入命令:中文换成你的真实目录。
lipo -create “……真机/目录/那个白板文件“ "……/模拟器/目录/那个白板文件" -output “…..另保存的/目录/文件”
合并好的新文件,覆盖掉原来的framework中的文件便可。这个framework就会支持全部设备和真机、模拟器所有版本。
其实这个方法就是用*.a文件的合并方法。在framework同样有效。framework中的白板文件就好像*.a文件同样。
九、关于xib的引用。一样根上边建立framework的方法同样,只是设置不一样。我加了一个名字为:Resource.bundle静态资源文件。
这个样子:
Target:并选择 Build Settings -> Architectures -> Base SDK 改成Latest iOS(ios 8.1)
Target:在 Deployment 下,
Target:将 “Mac OS X Deployment Target”改成”Compiler Default”,
Target:将 “Targeted Device Family”改”iPhone/iPad”,
Target:将 “iOS Deployment Target”,改成 “iOS 7.0”:
9.一、在MyViewController.m文件中编写下。别忘了在*.h里写上接口。
9.二、而后就是给新加的资源文件拖拽下。
再选中工程文件,拖拽后的样子(就是转静态库的工程)。
为了方便查看,我把MyViewController.xib背景涂成了蓝色,加了个红按钮。直接:command+R。一切运行正常。

9.三、而后把这两个文件都复制出来。
放到其余工程里,运行。是否是很简单。

十、加个图片。怎么加不解释来。先加一个不用管理器管理的图片。
工程command+R。。一切正常。

10.一、其余工程引用静态库,再跑。正常。嘿嘿,是否是多了个图片文件。
