beforeold blog

「梦未圆,心不老」

[iOS]使用blockable NSTimer避免内存泄漏

背景 此知识点,从阅读《Effective Objective-C》中学习到,现扩展到 Swift 并兼容 iOS 10+ NSTimer 提供定时执行任务的功能,可用于延时或者重复处理事务。使用 NSTimer 执行重复任务时(非重复任务会在触发后自动撤销 invalidate),必须注意的是一个内存泄露的问题,原因是 iOS 10 以前 Timer 基于 Target-act...

[iOS] [OC] 使用 block 实现函数嵌套

函数嵌套 在 Swift 中,在函数内部定义一个函数即函数嵌套,举例如下: func foo() { var a = 1 func bar() { a += 1 } bar() } 在 OC 中没有这类特性,不过如果联想到 Swift 中函数实际是一种有名字的闭包,那么函数嵌套的思想就可以延伸到 OC 语言中了。 ...

[iOS] [OC] 关于block回调、高阶函数“回调再调用”及项目实践

1/3 回调 使用block进行回调处理是十分便利的处理方式,在UIKit的设计中也屡见不鲜,例如: UIView动画,动画执行后调用completion内的block代码。 + (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animati...

[iOS][OC] 开发利器:控制器传送门VCPicker(附demo)

0 背景 在项目早期开发阶段,还不需要接入后台网络数据,主要工作的界面的开发。 随着业务页面的深入,要查看二级、三级页面的效果就需要编译后跳转两三次甚至更多,不断地重复这个过程相对来说,就没有可以直接启动就查看那个页面来得那么高效。 1 解决方案 1.1 简单粗暴的方式 常见的做法是在application:didFinishLaunchWithOptions:时直接push到想要到达的页...

[iOS] [OC] 轻量级的表单框架 GSForm(附demo)

1.主要特点 轻量级,只有4个类,1个控制器Controller,3个视图模型ViewModel 支持** iOS8 及以上 ** GitHub 和 Demo 下载 支持完全自定义单元格cell类型 支持自动布局Autolayout和固定行高 表单每行row数据和事件整合为一个model,基本只需管理row 积木式组合 row,支持 s...

[iOS] [OC] NSNotificationCenter 进阶及自定义(附源代码)

1、并不总是需要移除观察者 自 iOS 9 开始(见 release notes ),Foundation 调整了 NSNotificationCenter 对观察者的引用方式( zeroing weak reference),不再给已释放的观察者发送通知,因此以往在 dealloc 时移除观察者的做法可以省去。 如果是需要适配 iOS 8,那么 UIViewController及其子...

[iOS] 从 application delegate 引申三点

1、声明的 delegate 属性不总是 weak 策略 委托 delegation 是 iOS 开发的常用设计模式,为了避免对象与其代理之间的因为相互 retain 导致循环引用的发生,delegate 属性在如今的 ARC 时代通常声明为 weak 策略,然而在早期的手动管理内存的时代,还未引入 strong/weak 关键字,使用 assign 策略保证 delegate 的引用计数不...