野火🔥

【iOS】UIResponder拾遗
背景基于ResponderChain可以做一些事件传递,将所有view的操作最终都送回到ViewController来处理,以实现view的功能单一性。如下: 12345678910@interface UIResponder (Router)- (void)routerEventWithName:(NSString *)eventName userInfo:(NSDictionary *)userInfo;@end@implementation UIResponder (Router)- (void)routerEventWithName:(NSString *)eventName u...
【iOS】简单处理不小心调用高版本API的问题
iOS API 版本检查 如果app兼容2个以上版本,那就需要注意低版本不能调用高版本API,为避免开发过程中不小心调用,必要的工具检查是必须的,下面介绍一种简单的方法处理。 原理 —- Clang2015 年 clang 本身增加 API 版本检查功能,通过 -Wpartial-availability 这个 flag 可以打开,后续版本把 flag 变成了 -Wunguarded-availability。打开之后,clang 会把所有在低版本 iOS 上调用高版本 API 的情况用 warning 暴露出来,如下图所示。 具体实现 1、打开 -Wunguarded-avail...
【iOS】从同步锁到多线程
年前年后,忙的事情太多,没有继续更新博客,打算近期总结下过往。 如果每天只是做需求,写UI,可能不需要知道太多多线程的知识。也许简单的GCD会使用,再加几个开源框架,大多数功能都能实现。但如果你想写个框架,开源出来,那多线程就是一个永远绕不开的话题。除非你是一个前端开发者,否则无论在公司里,还是供自己娱乐,如果你想把技术走向深入,那多线程都是必须要明白的事。 本文先从iOS中objective-c的多线程同步开始,给iOS下的多线程做一个概述。 一、几种线程同步方式1、自旋锁 OSSpinLock上测试代码 1234567891011121314151617181920__block...
JSPatch的一些使用注意点
JSPatch代码量不大,满满的都是神机妙算,到处都是黑科技。 主要的坑 – UIWebView相关如果在JSPatch的代码使用前,app没有初始化过UIWebView,那会造成UIWebView中JS不能解析的问题,打开网页根本不能看。解决方案: JSPatch使用前先alloc一个UIWebView,然后让ARC自动dealloc它就好了: UIWebView *webView = [[UIWebView alloc]init]; //Useless. Just to load the UIWebview framework. webView.frame = CGRectZ...