TPreventUnrecognizedSEL实现思路以及原理
TPreventUnrecognizedSEL使用方法
TPreventUnrecognizedSEL项目的GitHub地址: https://github.com/tobedefined/TPreventUnrecognizedSELTPreventUnrecognizedSEL实现思路以及原理:LINK
特点
使用runtime动态添加方法防止产生
Unrecognized Selector错误,可以防止因为对象方法和类方法缺失所产生的APP崩溃。对象方法:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[TestClass losted:instance:method:]: unrecognized selector sent to instance 0x102c....'类方法:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[TestClass losted:class:method:]: unrecognized selector sent to class 0x10000....'可以获取缺失方法的具体信息,包括:
- 缺失类方法或对象方法的类名;
- 所缺失的方法名;
- 缺失的是对象方法还是类方法。
iOS 11 适配注意点
Swift 4 的改变
GCD
TWebKit
GitHub 地址: https://github.com/tobedefined/TWebKit
很久之前写的一个很简单的库,最近整理了一下发到github了
特点
兼容
Objective-C和swift
TWebView
- 支持自动根据系统版本选择使用
UIWebView还是WKWebView加载网页 - 使用方法简单,与
UIWebView的使用方法极其类似,简化WKWebView的使用 - 双代理模式,支持使用通用的代理
commonDelegate(通用代理的类建议使用singleton单例模式),也支持同时设置普通的代理delegate默认情况下普通代理
delegate里实现的方法会优先于通用代理commonDelegate里实现的同名方法;在普通代理
delegate中实现某个方法的情况下不会去调用通用代理commonDelegate中的同名方法。(如果需要可以在普通代理delegate的该方法中使用[webView.commonDelegate someFunc..]主动调用通用代理commonDelegate的该方法) - 支持显示
ProgressView,UIWebView的Progress使用了NJKWebViewProgress中的部分代码进行模拟进度,支持配置ProgressView的颜色 - 支持配置是否允许滑动返回(
canScrollBack) - 支持配置是否可以放大缩小网页(
canScrollChangeSize) - 支持配置是否屏蔽长按链接显示ActionSheet和MenuController(
blockTouchCallout) - 支持配置是否屏蔽链接的3DTouch预览(
block3DTouch)
Swift 中的 inout & UnsafeMutablePointer 指针
TSegmentedView

特点
- 完美兼容
Objective-C和swift - 支持用户滑动和点击tab
- 支持滑动返回(在任意的tab)
- 支持
Frame和Autolayout自动布局,你可以使用Masonry/SnapKit/NSLayoutConstraint去布局view - 支持放入普通的
UIView(以及非滑动的UIView子类View),UIScrollView,UITableView - 支持的
UITableView添加tableHeaderView - 支持
UITableView添加 section header view,并且显示不会出现悬停位置不正确的情况 - 支持自定义
SegmentedControlView(tab点选)的样式,你可以自己设置动画、自己设置高度等等等