随笔分类 -  iOS

iOS study blog and problems solutions occored which my iOS develop work experience.
摘要:FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它提供了录制、转换以及流化音视频的完整解决方案。同时,FFmpeg是一套跨平台的方案,所以我们可以在iOS开发中使用它来进行一些视频与GIF的开发。 接下来,我们从编译FFmpeg开始,到使用FFmpeg,再到使用 阅读全文
posted @ 2018-08-23 11:51 wjwdive 阅读(590) 评论(0) 推荐(0) 编辑
摘要:之前的一篇文章 https://www.cnblogs.com/wjw-blog/p/7189730.html,按照流程能搭建好git仓库,有时候会有一些小问题。 按照这个流程:-在github 上新建一个仓库 -勾选 初始化 README.md文件 -ok, 生成 git仓库地址:http://u 阅读全文
posted @ 2018-08-20 16:18 wjwdive 阅读(890) 评论(0) 推荐(0) 编辑
摘要:线程安全: 当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题。就好比几个人在同一时修改同一个表格,造成数据的错乱。 解决多线程安全问题的方法 方法一:互斥锁(同步锁) 方法一:互斥锁(同步锁) @synchronized(锁对象) { // 需要锁定的代码 } 判断的时候锁对象要存在,如 阅读全文
posted @ 2018-08-20 15:28 wjwdive 阅读(435) 评论(0) 推荐(0) 编辑
摘要:UITableview的数据源为什么是代理,而不是引用? 我的理解,一般情况下控制器会引用tableView, 数据源和代理方法都是tableView的一个若引用,出了“tableView.datasource = slef;”这句代码的作用域。tableView.dataSource 就是nil了 阅读全文
posted @ 2018-08-09 17:43 wjwdive 阅读(257) 评论(0) 推荐(0) 编辑
摘要:1、FMDB 默认的使用方法不是线程安全的。 2、Sqlite 默认不支持外键。 3、Sqlite 不支持用 ALTER 关键字给已有表添加外键约束 解决: 1、FMDBDatabaseQueue 2、Sqlite 要主动启用外键。 3、创建表的时候添加外键约束 阅读全文
posted @ 2018-07-27 14:27 wjwdive 阅读(249) 评论(0) 推荐(0) 编辑
摘要:用Analysis 静态分析代码,发现了一些问题,修改之后,然后用Instrument -> Leaks对内存做动态分析,发现一个错误: 控制台报错:XPC connection interrupted 调试报错:libsystem_plantform.dylib'OSAtomicDequeue$v 阅读全文
posted @ 2018-07-18 16:25 wjwdive 阅读(3138) 评论(0) 推荐(0) 编辑
摘要:引发这个问题的原因可能是我再工程中用cocopods导入了本地的SDK,中间有用到从本地添加sdk。 然后再新建其他项目时,再用cocopods 的 install命令就报了这个错。网上的答案很多。我试了很有效: 在终端执行命令: 执行 pod install 阅读全文
posted @ 2018-07-18 14:49 wjwdive 阅读(1538) 评论(0) 推荐(0) 编辑
摘要:MVC是苹果推荐使用的iOS APP架构。后来又有MVVM,MVP等架构出现。主要目的是让业务逻辑、展示、数据各个层级解耦。实现最大程度上的代码复用。 对MVC这种架构来说,随着APP中模的增多,控制器中的业务逻辑会越来越复杂,代码量会越来越多。一个文件有几千行也很常见。这时候就算打上mark找方法 阅读全文
posted @ 2018-07-03 11:16 wjwdive 阅读(189) 评论(0) 推荐(0) 编辑
摘要:开发当中用到通知,通知的定义必须要有一个字符串标识通知的名字。一般可以直接写一个字符串,在通知创建和监听的时候直接写这个字符串。 但这样做非常不好,随手创建写代码当时很舒服,但是后来维护的时候发现通知监听会散落到不同的文件,如果要改通知的名字,每个地方都要改, 将会非常麻烦。 如下面这样 推荐做法: 阅读全文
posted @ 2018-06-25 11:02 wjwdive 阅读(1616) 评论(0) 推荐(0) 编辑
摘要:1、自动布局拉伸和压缩优先级 Autolayout中每个约束都有一个优先级,优先级的范围是1~1000.创建一个约束,默认的优先级最高是1000。 Content Hugging Priority:该优先级表示一个控件抗被拉伸的优先级。游戏那几越高,越不容易被拉伸,默认是250。 Content C 阅读全文
posted @ 2018-06-20 10:31 wjwdive 阅读(137) 评论(0) 推荐(0) 编辑
摘要:好多场景会导致循环引用,例如使用Block、线程、委托、通知、观察者都可能会导致循环引用。 1、委托 遵守一个规则,委托方持有代理方的强引用,代理方持有委托方的弱引用。 实际场景中,委托方会是一个控制器对象,代理方可能是一个封装着网络请求并获取数据的对象。 例如:ViewController中需从网 阅读全文
posted @ 2018-06-15 12:56 wjwdive 阅读(974) 评论(0) 推荐(0) 编辑
摘要:ARC当中变量的四种生命周期限定符 __strong __weak __unsafe_unretained __autoreleaseing __strong 是默认的限定符,无需显示引入,只要有强引用指向,对象就会长时间驻留在内存中。可以将__strong理解为reatain调用的ARC版本。 _ 阅读全文
posted @ 2018-06-15 10:33 wjwdive 阅读(269) 评论(0) 推荐(0) 编辑
摘要:强引用, 默认引用类型。被强引用指向的内存不被释放。强引用会对被引用对象的引用计数器+1,从而扩展对象的生命周期。 弱引用, 弱引用是医用特殊的引用类型。它不会增加引用计数器,因而不会扩展对象的生命周期。 OC当中就这两种引用类型。 其他引用类型 软引用, 软引用与弱引用非常相似,只是前者没有那么迫 阅读全文
posted @ 2018-06-15 09:59 wjwdive 阅读(289) 评论(0) 推荐(0) 编辑
摘要:iOS 开发当中,自动引用计数已经是标准的内存管理方案。除了一些老旧的项目或者库已经没有人使用手动来管理内存了吧。 ARC无疑是把开发者从繁琐的保留/释放引用对象逻辑中解脱出来。但这并不是万事大吉了,ARC当中一些编译器规则我们必须清楚。 ARC编译器规则 1、不能实现或调用 retain、rele 阅读全文
posted @ 2018-06-15 09:50 wjwdive 阅读(177) 评论(0) 推荐(0) 编辑
摘要:最近发现一个低级错误,在Model1.h中定义2个接口 @interface 没有在Model1.m中实现 在.h中定义了一个用来声明对象的接口,在.m中要把实现部分写上,不然就会报如上错误。 一般我们定义一个类,会在obj.h, obj.m中分别自动生成 @interface obj:NSObje 阅读全文
posted @ 2018-06-12 15:57 wjwdive 阅读(342) 评论(0) 推荐(0) 编辑
摘要:最近工作中遇到一个问题,发现用简单的AFNetworking封装,不能满足需求。一般情况下,所有的请求会指定到一个url,然后所有的请求都用AFNetworking的二次封装方法。如自己封装的GET,POST方法.这种封装方式也能满足大多数的需求。 我们的情况稍有不同,请求API实际不多,但是都在一 阅读全文
posted @ 2018-06-11 17:11 wjwdive 阅读(2773) 评论(0) 推荐(0) 编辑
摘要:正常情况下, block 缺点: 1、block很难追踪,难以维护 2、block会延长先关对象的生命周期 block会给内部所有的对象引用计数+1, 一方面会带来潜在的循环引用(retain cycle),不过我们可以通过weakself的手段解决。 另一方面,它会延长对象的生命周期 3、bloc 阅读全文
posted @ 2018-06-11 16:16 wjwdive 阅读(924) 评论(0) 推荐(0) 编辑
摘要:非对称加密需要两把钥匙:公钥和秘钥。 单向加密:一般情况下服务器会持有秘钥和公钥,那该怎么使用呢?以注册场景为例,最初服务器持有公钥和密钥。 用户注册时不是直接发送用户名,密码,验证码等明文信息给服务器请求注册。而是先发送一个注册请求,服务器会把公钥返回给客户端,服务器返回的公钥一般是一个base6 阅读全文
posted @ 2018-05-30 00:56 wjwdive 阅读(284) 评论(0) 推荐(0) 编辑
摘要:首先MAC自带了ruby,他是用rvm 管理的, 如果你用homebrew又安装了一个新版,很可能在升级cocoapods时遇到问题,明明自己用homebrew升级到最新版本了,页配置环境变量了,为什么还是无法升级cocoapods? 因为系统默认还是用 要用到一个气泡显示器,用了git上面的一个第 阅读全文
posted @ 2018-05-08 10:47 wjwdive 阅读(1201) 评论(0) 推荐(0) 编辑
摘要:runloop 的 model作用是什么? 答案: model 主要是用来指定事件在运行循环中的优先级,分为: NSDefaultRunLoopMode(kCFRunLoopDefaultMode): 默认,空闲状态 UITrackingRunLoopMode: UIScrollView 滑动时 继 阅读全文
posted @ 2018-04-26 14:32 wjwdive 阅读(105) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示