Block 到底啥时候会崩溃

2017-05-18
阅读 3 分钟
5k
block可以说是OC一项非常好用的功能。block的本质,实际上是『带有自动变量值的匿名函数』。但是在block的使用上,有各种江湖传说,说在某某情况下,block的使用是不安全的,会造成崩溃。于是也有很多面试题喜欢考察block。但是,实际的block的不安全使用,貌似除了循环引用,也没遇到过什么情况啊?我敢说,block在现如...

个人对于super的调用过程中,一些不一样的理解

2017-05-09
阅读 4 分钟
6.1k
网上很多大神所解释的 super 调用逻辑,实际上好像并不能说得通。这里有我的一点点理解。 曾经有过一份特别好的runtime习题,在孙源大神的博客里神经病院objc runtime入院考试。题目非常难,也很深。其中的第一题,关于super关键字也是很刷新认知。 但是个人感觉,他的解答和其他给出详细解释的大神们的回答,都有点不太...

闲情——C语言指针和数组的探索

2017-04-19
阅读 3 分钟
2.3k
objc_property_t *class_copyPropertyList(Class cls, unsigned int *outCount)函数是runtime中的一个函数,用来 copy 一份类对象的属性列表,返回值为objc_property_t *类型的数组。然后就可以遍历这个数组取出每个属性值。几乎每个字典转模型框架都需要这个函数。

iOS 客户端对于运营商劫持的一点点对抗方式

2017-04-13
阅读 7 分钟
16.3k
网络劫持一般有两种情况,一种是DNS劫持,另一种是HTTP劫持。 从表现上区分这两种劫持非常简单。 如果是DNS劫持,你输入的网址是google.com,然后出来的页面是百度。 如果是HTTP劫持,你打开了google.com,可是右下角弹出了百度推广的不孕不育广告。 URL域名解析成ip地址的过程被称作 DNS 解析。在这个过程中,由于 DNS ...

针尖上带着脚镣跳舞的widget

2017-03-30
阅读 9 分钟
3.6k
自从iOS 10苹果给widget做了一次大改版后,很多人都开发了自己的widget。网上也有很多教程,来告诉你怎么快速开发一个widget。我的这篇文章也不会重复那些简单的创建extension添加证书之类的东西。我们要深入地看一下widget到底应该做成什么样子。

从@property说起(四)深入成员变量

2017-03-27
阅读 5 分钟
4.1k
.m文件中,你会发现如果你使用 self.name,Xcode会报错,提示你使用->,改成self->name就可以了。因为OC中,点语法是表示调用方法,而上面的代码中没有name这个方法。所以在oc中点语法其实就是调用对象的setter和getter方法的一种快捷方式, self.name = myName 完全等价于 [self setName:myName];

从@property说起(三)atomic与多线程锁

2017-03-23
阅读 6 分钟
8k
当我们写下@property (weak) id obj时,编译器默认会给obj这个属性加atomic关键字,也就是说,默认的setter和getter方法里是加了锁的。

从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么

2017-03-21
阅读 3 分钟
4.6k
这段代码应该没有疑问,输出的是null。那么究竟为什么是null?如果你仅仅给出答案说,因为foo这个属性是weak修饰,是不是太过简单了点。所以,问题要一点点分析,首先就是:

从@property说起(一)开题篇

2017-03-21
阅读 2 分钟
2.1k
@property可以说是每一个iOS开发者最常用的一句代码,甚至没有之一。但是,在上古的Xcode 4.4时代之前,事情并不是这个样子的。当时的iOS开发者,每当需要一个属性的时候。总是需要写这么几句话:

iOS 客户端基于 WebP 图片格式的流量优化(下)

2016-08-20
阅读 10 分钟
6.7k
在iOS上,重写一份图片缓存是不现实的,而直接修改SDWebImage框架也是不太好的。所以,在SDWebImage的基础上添加一个中间层CacheManager比较好。

iOS 客户端基于 WebP 图片格式的流量优化(上)

2016-08-14
阅读 8 分钟
16.4k
现在这个方案是用于一个多图片的新闻类应用,粗略估计过,用户在浏览完第一页所有新闻(共48篇),会消耗流量达100M,其中98M为图片,这里值得优化的空间非常大。