What is Life But One Chanllege After Another

Runtime之MetaClass

对于iOS开发者来说,元类一直是一个在面试时被重点考察的点,为什么在语言设计时要增加元类这个概念?他的优点是什么?他到底有什么作用呢?这篇文章我们从Runtime源码的角度和语言设计的角度来探讨MetaClass存在的原因以及他的存在解决了哪些问题。

Runtime之MetaClass

iOS webP.framework制作

相信目前大部分APP都已经支持了WebP格式的图片,下面我们通过这种图片简单介绍下WebP格式图片的优点。

iOS webP.framework制作

Time Profiler 使用

自从到现在的公司半年一来,业务上一直在不停的迭代。为了维持版本的迭代速度,代码review变得不再像之前那么严苛。导致近期出现了几个比较严重的问题,趁着周末的时间,使用Time Profiler好好的检测一下应用及时发现问题,解决问题。

Time Profiler 使用

探秘NSProxy

之前一直知道有一个与NSObject平级的类存在,但是日常的开发中好像一直都没有用到过。那么他存在的意义究竟是什么呢?这篇文章我们一起来探秘NSProxy。

探秘NSProxy

为什么要存在MetaClass

最近去外面面试了一次,有一个问题觉得很有意思:OC中为什么要存在metaClass,在类的结构上这么设计的原因是什么?metaClass中都有什么?有什么优点?

这篇文章我们就来讨论一下上面的这几个问题!

为什么要存在MetaClass

__Block 到底做了什么

Block默认不允许修改外部变量的值,我们可以通过对要修改的变量添加__block修饰,来达到可以在block内部修改外部变量的目的。那么__block到底都做了什么呢?为什么添加了__block就可以在block内部修改外部变量了呢!

__Block 到底做了什么

ios异常处理之try-catch-finally

OC中的异常一般是通过传递一个NSError的对象到方法中,如果方法执行错误会直接返回。并没有像JAVA一样大量使用Try catch进行异常的捕获。这是因为try catch无法捕获UncaughtException,而oc中大部分crash如:内存溢出、野指针等都是无法捕获的,而能捕获的只是像数组越界之类。所以try catch对于oc来说,比较鸡肋。虽说是鸡肋 但是我们在某些情况下还是有用的 这里简单介绍一下。

ios异常处理之try-catch-finally

iOS内存管理之AutoreleasePool

每个线程(包括主线程),都维护了一个管理 NSAutoreleasePool 的栈。当创先新的 Pool 时,他们会被添加到栈顶。当 Pool 被销毁时,他们会被从栈中移除。
autorelease 的对象会被添加到当前线程的栈顶的 Pool 中。当 Pool 被销毁,其中的对象也会被释放。当线程结束时,所有的 Pool 被销毁释放。

iOS内存管理之AutoreleasePool

iOS 控制器 代码结构规范

一个良好的代码风格有助于提高代码的可读性,防止错误发生几率,每个公司可能都有自己的一套规范,这里推荐一种通用的 可读性较高的规范

iOS 控制器 代码结构规范