ios 不采用三方框架热更新
2017-03-05 22:32
211 查看
核心功能在这里,其余步骤其实在另外一个FrameWorks工程,那边做的事情就是建立了一个HotUpdateControl对象 内部有一个方法getVcs 可以返回一个UIViewController数组
#import "TabController.h" //#import <HotUpdateMudel/HotUpdateControl.h> @interface TabController () @end @implementation TabController -(instancetype)initWithCoder:(NSCoder *)aDecoder{ if (self = [super initWithCoder:aDecoder]) { NSString *documentDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; NSArray* arrFramework = [self getFilenamelistOfType:@"framework" fromDirPath:documentDirectory]; NSLog(@"%@",arrFramework); if (arrFramework.count==0) { NSArray * arrTitle = @[@"首页",@"广场",@"朋友圈",@"我的",@"设置"]; NSMutableArray * arrVcs = @[].mutableCopy; for (int i=0; i<arrTitle.count; i++) { UIViewController * vcRoot = [[UIViewController alloc]init]; vcRoot.title = arrTitle[i]; vcRoot.view.backgroundColor = [UIColor whiteColor]; UINavigationController * navi = [[UINavigationController alloc]initWithRootViewController:vcRoot]; [arrVcs addObject:navi]; } [self setViewControllers:arrVcs animated:YES]; }else{ NSString *bundlePath = [NSString stringWithFormat:@"%@/%@",documentDirectory,[arrFramework lastObject]]; if (![[NSFileManager defaultManager] fileExistsAtPath:bundlePath]) { NSLog(@"file not exist ,now return"); return self; } NSBundle *bundle = [NSBundle bundleWithPath:bundlePath]; if (!bundle || ![bundle load]) { NSLog(@"bundle load error"); } Class loadClass = [bundle classNamed:@"HotUpdateControl"]; if (!loadClass) { NSLog(@"get bundle class fail"); return self; } NSObject *bundleObj = [loadClass new]; NSArray * arrVc = [bundleObj performSelector:@selector(getVcs)]; NSMutableArray * arrVcs = @[].mutableCopy; for (int i=0; i<arrVc.count; i++) { UIViewController * vcRoot =arrVc[i]; vcRoot.view.backgroundColor = [UIColor whiteColor]; UINavigationController * navi = [[UINavigationController alloc]initWithRootViewController:vcRoot]; [arrVcs addObject:navi]; } [self setViewControllers:arrVcs animated:YES]; } } return self; } -(NSArray *) getFilenamelistOfType:(NSString *)type fromDirPath:(NSString *)dirPath { NSArray *fileList = [[[NSFileManager defaultManager] contentsOfDirectoryAtPath:dirPath error:nil] pathsMatchingExtensions:[NSArray arrayWithObject:type]]; return fileList; } - (void)viewDidLoad { [super viewDidLoad]; }
相关文章推荐
- iOS6.0框架及功能更新小结(转)
- IOS6.0框架及功能更新小结
- iOS 文件下载 (AFNetwork 三方框架 含progressView)五
- iOS开发——网络篇——文件下载(NSMutableData、NSFileHandle、NSOutputStream)和上传、压缩和解压(三方框架ZipArchive),请求头和请求体格式,断点续传Range
- iOS开发——网络篇——JSON和XML,NSJSONSerialization ,NSXMLParser(XML解析器),NSXMLParserDelegate,MJExtension (字典转模型),GDataXML(三方框架解析XML)
- 实时更新的 JS框架 Meteor 发布 0.3.4|互联网技术与编程讨论区 - FreeAir - JavaScript Flash iOS
- IOS开发框架 EasyIOS 2.2 版本更新
- ios sqlite数据库,采用第三方框架FMDB【转】
- iOS之github第三方框架(持续更新)
- [转]IOS6.0框架及功能更新小结
- iOS6.0框架及功能更新小结
- iOS 6.0开发框架及功能更新小结
- iOS 文件下载 (AFNetwork 三方框架 文件名中文字符乱码问题解决)四
- iOS6.0框架及功能更新小结
- iOS6.0框架及功能更新小结
- 《IOS6.0框架及功能更新小结》
- iOS6.0框架及功能更新小结
- iOS 更新Xcode后,三方插件不能用的解决方法
- 提高iOS开发效率的第三方框架等--不断更新中。。。