06 2018 档案
摘要:开发当中用到通知,通知的定义必须要有一个字符串标识通知的名字。一般可以直接写一个字符串,在通知创建和监听的时候直接写这个字符串。 但这样做非常不好,随手创建写代码当时很舒服,但是后来维护的时候发现通知监听会散落到不同的文件,如果要改通知的名字,每个地方都要改, 将会非常麻烦。 如下面这样 推荐做法:
阅读全文
摘要:有时可能会遇到这么一种情况,项目的文件夹中嵌套文件夹,我们的源代码按模块分布在不同层级的文件目录里 每个文件里都有相同的内容。我们想去掉这些信息,或者添加一些信息。 我们该怎么样做呢? python可以很方便的帮我们实现 批量删除重复内容的思路: step1、获取根目录下所有文件的路径 step2、
阅读全文
摘要:1、自动布局拉伸和压缩优先级 Autolayout中每个约束都有一个优先级,优先级的范围是1~1000.创建一个约束,默认的优先级最高是1000。 Content Hugging Priority:该优先级表示一个控件抗被拉伸的优先级。游戏那几越高,越不容易被拉伸,默认是250。 Content C
阅读全文
摘要:好多场景会导致循环引用,例如使用Block、线程、委托、通知、观察者都可能会导致循环引用。 1、委托 遵守一个规则,委托方持有代理方的强引用,代理方持有委托方的弱引用。 实际场景中,委托方会是一个控制器对象,代理方可能是一个封装着网络请求并获取数据的对象。 例如:ViewController中需从网
阅读全文
摘要:ARC当中变量的四种生命周期限定符 __strong __weak __unsafe_unretained __autoreleaseing __strong 是默认的限定符,无需显示引入,只要有强引用指向,对象就会长时间驻留在内存中。可以将__strong理解为reatain调用的ARC版本。 _
阅读全文
摘要:强引用, 默认引用类型。被强引用指向的内存不被释放。强引用会对被引用对象的引用计数器+1,从而扩展对象的生命周期。 弱引用, 弱引用是医用特殊的引用类型。它不会增加引用计数器,因而不会扩展对象的生命周期。 OC当中就这两种引用类型。 其他引用类型 软引用, 软引用与弱引用非常相似,只是前者没有那么迫
阅读全文
摘要:iOS 开发当中,自动引用计数已经是标准的内存管理方案。除了一些老旧的项目或者库已经没有人使用手动来管理内存了吧。 ARC无疑是把开发者从繁琐的保留/释放引用对象逻辑中解脱出来。但这并不是万事大吉了,ARC当中一些编译器规则我们必须清楚。 ARC编译器规则 1、不能实现或调用 retain、rele
阅读全文
摘要:最近发现一个低级错误,在Model1.h中定义2个接口 @interface 没有在Model1.m中实现 在.h中定义了一个用来声明对象的接口,在.m中要把实现部分写上,不然就会报如上错误。 一般我们定义一个类,会在obj.h, obj.m中分别自动生成 @interface obj:NSObje
阅读全文
摘要:最近工作中遇到一个问题,发现用简单的AFNetworking封装,不能满足需求。一般情况下,所有的请求会指定到一个url,然后所有的请求都用AFNetworking的二次封装方法。如自己封装的GET,POST方法.这种封装方式也能满足大多数的需求。 我们的情况稍有不同,请求API实际不多,但是都在一
阅读全文
摘要:正常情况下, block 缺点: 1、block很难追踪,难以维护 2、block会延长先关对象的生命周期 block会给内部所有的对象引用计数+1, 一方面会带来潜在的循环引用(retain cycle),不过我们可以通过weakself的手段解决。 另一方面,它会延长对象的生命周期 3、bloc
阅读全文
摘要:算法题目:有两个字符串由不同的字母组成,一长一短,长的为A短的为B。设计一个算法,如果所有在B中出现的字符都在A中出现,则返回true,否则返回false。 如下字符串: 字符串A: abddfdioegdddffsfagj 字符串B: dofsjadg 字符串B中每个字符都在A中出现,返回true
阅读全文