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点选)的样式,你可以自己设置动画、自己设置高度等等等