Swift
文章平均质量分 60
chernyog
它山之石 可以攻玉
展开
-
NSTimer / CADisplayLink循环引用问题分析
背景:在使用定时器的时候,一不小心就会遇到循环引用问题,导致控制器不会被销毁,定时事件也不会被终止。故障代码class ViewController: UIViewController { var displayLink: CADisplayLink? // var timer: Timer? override func viewDidLoad() { super.viewDidLoad() // timer = T.原创 2021-12-23 11:03:46 · 656 阅读 · 1 评论 -
iOS异步任务调度 - OperationQueue、DispatchGroup、DispatchSemaphore、ReactiveSwift
需求有A、B、C、D、E、F 六个任务,D依赖A、B的结果,E依赖B、C的结果,F依赖D、E的结果,A、B、C互不依赖,D、F之间不依赖,可以并发,整体要尽快执行完成。参考实现一、通过 OperationQueue 添加依赖关系实现/// 通过 OperationQueue 控制异步任务调度func testOperation() { // 创建异步任务 let operaA = BlockOperation { self.execTask("A") }原创 2020-06-12 18:13:50 · 396 阅读 · 0 评论 -
iOS异步任务调度 - OperationQueue、DispatchGroup、DispatchSemaphore、ReactiveSwift
iOS异步任务调度 - OperationQueue、DispatchGroup、DispatchSemaphore、ReactiveSwift需求有A、B、C、D、E、F 六个任务,D依赖A、B的结果,E依赖B、C的结果,F依赖D、E的结果,A、B、C互不依赖,D、F之间不依赖,可以并发,整体要尽快执行完成。参考实现一、通过 OperationQueue 添加依赖关系实现/// 通过 OperationQueue 控制异步任务调度func testOperation() { //原创 2020-05-22 10:31:31 · 405 阅读 · 0 评论 -
CocoaPods pod install 超时的解决办法
错误描述[!] Error installing ReactiveCocoa[!] /usr/bin/git clone https://github.com/ReactiveCocoa/ReactiveCocoa.git /var/folders/np/3ty5h5jd439ft50q9s0ygnfh0000gn/T/d20200421-5534-yfmqbf --template= --s...原创 2020-04-21 11:16:25 · 10083 阅读 · 1 评论 -
算法练习题 - 回文字符串
意图使用单链表实现判断一个字符串是否是回文字符串思路使用快、慢指针找出字符串中间那个数找出前半部分字符串遍历前半部分,和整个字符串挨个比较字符,如果都相等,则是回文字符串,反之不是开发环境swift4.2Xcode11.3示例代码Node类class Node<T>: NSObject, NSCopying { var next: Node?...原创 2020-01-09 12:24:53 · 500 阅读 · 1 评论 -
LLDB-你可能遗忘的调试小技巧
现状大多数做了好几年的iOS开发者(比如本人),用的最多的调试指令,大概是po (print object)吧,如下图。对其他命令知之甚少,当然这也无伤大雅,只是效率上略低一些罢了~(lldb) po tip"hello"(lldb) po 1+12(lldb) po tip + " world!""hello world!"为了提高工作效率,我们需要了解LLDB,至少需要多...原创 2019-12-11 10:44:51 · 1085 阅读 · 1 评论 -
iOS开发之系统权限
iOS基础之系统权限背景配合监管要求,针对APP用户获取管理权限做如下整改:APP在首次启动页面对权限进行解释说明(包括解释权限的涵义以及说明使用权限的用途)个人中心-设置,增加权限设置菜单,展示涉及获取的所有权限,以及展示当前开启/关闭状态一切为了监管……软件环境Xcode11.2Swift4.2iOS13.2.2开门见山,上代码工具类:SystemPerm...原创 2019-11-20 15:48:15 · 1388 阅读 · 0 评论 -
ScrollView自动布局的实现方式
背景开发中,可能会有一些页面显示的元素很多,可能会超出一个屏幕,但也不适合用 TableView 或者 CollectionView,此时我们一般会用 ScrollView,那么就会出现自动布局的问题。实现方式纯代码特点编码繁琐:需要手写控件安全:只要正确地设置约束或者 frame、contentSize,一般不会出现滚动问题示例lazy var scrollView: UIScrollVie原创 2017-09-14 09:36:38 · 2458 阅读 · 0 评论 -
Swift 比较运算符
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2017-08-24 11:12:48 · 977 阅读 · 0 评论 -
iOS - 自定义 UITabBar
iOS - 自定义 UITabBar动机 关于自定义 TabBar,早就有过很多讨论,开源网站上也有很多造好的轮子,多半是纯代码实现有个性的 TabBar,当然我们可以很方便的使用它。周末闲着没事干,自己也写了一下,模仿今日头条的 TabBar 效果,实现方式是Storyboard + 代码。效果图实现步骤在 Storyborad 上搭建项目基础结构在界面上设置每个 TabBarItem 的相原创 2017-08-28 09:34:12 · 611 阅读 · 2 评论 -
LinkTextView-可点击的文本
LinkTextView背景 在开发中,有时需要展示一句带有某些可接受用户响应的关键词的文案,比如在页面上显示某某协议之类的。如果一行能完全显示(各种设备上),那么就可以在界面上写死布局;如果不能显示,则就需要使用UITextView控件了。效果图 图中,《XXXX规则》是可点击的,并且可以完美的适配各个设备。废话少说,直接上代码 ↓核心代码override func viewDidLo原创 2017-04-10 16:41:09 · 915 阅读 · 0 评论 -
TextField禁用粘贴、选择和全选功能
众所周知,TextField默认情况下,双击会出现“Paste”等提示复制粘贴的快捷菜单,方便用户快速编辑文本,但很多情况下,我们并不希望用户能够粘贴文本【虽然这样不友好,但万一产品经理要这么实现呢?】,那么我们可以这样做:方法自定义TextField重写canPerformAction方法class CustomTextField: UITextField { /// 是否只是用于显原创 2016-11-16 17:32:17 · 5567 阅读 · 0 评论 -
Swift-guard & defer
Swift学习笔记之guard & defer 参考文档:http://nshipster.cn/guard-and-defer/guardguard 是一个新的条件声明,表示如果条件不满足时退出当前 block。任何被声明成 guard 的 optional 绑定在其他函数或 block 中都是可用的,并强制在 else 中用 return 来退出函数、continue 或 break 退原创 2016-05-31 17:55:04 · 1489 阅读 · 0 评论 -
Swift-weak & unowned
Swift学习笔记之weak & unowned感谢喵神的《100个Swift开发必备 Tip》内容参考自 “Tip46 内存管理,weak和unowned” weakweak在引用的内容被释放后,标记为weak的成员将会自动变成nil(因此被标记为@weak的变量一定是Optional值) unownedunowned像OC里面的 unsafe_unretained,unowned设置以后原创 2016-06-06 09:05:05 · 727 阅读 · 0 评论 -
Swift-@UIApplicationMain
Swift-@UIApplicationMain感谢喵神的《100个Swift开发必备 Tip》内容参考自 “Tip43 @UIApplicationMain”在C系语言中,程序的入口都是main函数,对于熟悉的OC APP项目,Xcode自动帮我们新建了一个main.m文件,其中就有main函数:int main(int argc, char * argv[]){ @autorele原创 2016-06-07 09:40:02 · 3629 阅读 · 0 评论 -
Swift-UICollectionView布局之线性布局
Swift-UICollectionView布局之线性布局应用场景轮播图(AppStore)数据展示(招商银行账单页)图片查看器实现思路线性布局,在二维平面上滚动,所以继承自流水布局(UICollectionViewFlowLayout)流水布局提供一下属性: itemSizesectionInsetscrollDirectionminimumLineSpacing每个cell原创 2016-05-20 17:11:04 · 3142 阅读 · 4 评论 -
Swift-自定义控件之IndicatorButton(带动画的按钮)
Swift-自定义控件之IndicatorButton(带动画的按钮)应用场景 登录或者注册时,点击按钮发送请求,此时禁用按钮,并且按钮上加载菊花,提示用户需要等待,请求回调之后隐藏菊花……实现思路初步尝试:动画修改按钮的title位置不是那么容易(或者说我没找到合适的方法)最终方案:在按钮上添加子控件,动画隐藏或显示子控件和title代码实现新建类// 继承自UIButtonpubl原创 2016-05-18 17:25:09 · 2139 阅读 · 0 评论 -
Swift版的SQLite帮助类
SQLiteHelper创建SQLiteHelper类/// SQLite数据库处理帮助类////// 此类中封装了关于SQLite数据库处理的业务函数class SQLiteHelper{ // 业务代码...}单例private static let instance = SQLiteHelper()/// 单例 全局的数据访问接口class var sharedIn原创 2015-03-16 19:01:25 · 1185 阅读 · 0 评论