需求是这样子的,让iOS前端写一个页面的类文件,然后打包给后台,前端下载这个文件,再加载出页面。动态化模板。
这种需求是不科学的,因为Swift的方法都是静态的,也就是说工程在编译的时候就加载好了所需要的类文件。
后来查了查资料,还真能做,就是有点麻烦。并且不能上线。
静态库:链接时会被完整的复制到可执行文件中,被多次使用就有多份拷贝。
动态库:链接时不复制,程序运行时由系统动态加载到内存,系统只加载一次,多个程序共用(如系统的UIKit.framework
等),节省内存。但是苹果不让使用自己的动态库,否则审核就无法通过。
动态库,顾名思义就是动态加载的。
我们可以写一个类页面,打包成动态库,然后给后台,这样就是OK了。
动态库的打包百度上多的是,这里就不介绍了。下面开始使用动态库。有OC和Swift2中方式
先上OC代码的使用。
-(void)testFramework
{
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSLog(@"%@",paths);
NSString *documentDirectory = nil;
if ([paths count] != 0)
documentDirectory = [paths objectAtIndex:0];
//拼接我们放到document中的framework路径
NSString *libName = @"oneView.framework";
NSString *destLibPath = [documentDirectory stringByAppendingPathComponent:libName];
//判断一下有没有这个文件的存在 如果没有直接跳出
NSFileManager *manager = [NSFileManager defaultManager];
if (![manager fileExistsAtPath:destLibPath]) {
NSLog(@"There isn't have the file");
return;
}
//复制到程序中
NSError *error = nil;
//加载方式二:使用NSBundle加载动态库
NSBundle *frameworkBundle = [NSBundle bundleWithPath:destLibPath];