240 发简信
IP属地:北京
  • KVO 的实现原理

    概述 KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则其观察者就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改...

  • @handyTOOL 我是说,这边不是切成了正方形掉落么,我想切成的正方形变成圆掉落。于是要切个圆角

    iOS特效之你家玻璃碎了

    点击获取本文示例代码 前言 最近逛博客看到了一篇帖子,里面介绍了自己如何设计一套星球大战主题的UI,里面有一个界面破碎的特效,看着很炫酷,那篇文章的作者使用了UIDynami...

  • 我也试过这个特效来做转场动画。但是我不想掉落这么生硬。首先想要的是圆角掉落,可是圆角切割太耗性能了。然后是切出来的大小随机,这个实现了。对于圆角有啥可行的方案吗?

    iOS特效之你家玻璃碎了

    点击获取本文示例代码 前言 最近逛博客看到了一篇帖子,里面介绍了自己如何设计一套星球大战主题的UI,里面有一个界面破碎的特效,看着很炫酷,那篇文章的作者使用了UIDynami...

  • @亮仔123 不合适,运行时的运行操作看rewrite源码分析没有用。看rewrite源码学习,一般都是看比如说 block, category 会被rewrite成什么样的代码,了解语言层面的知识

    神经病院Objective-C Runtime出院第三天——如何正确使用Runtime

    前言 到了今天终于要"出院"了,要总结一下住院几天的收获,谈谈Runtime到底能为我们开发带来些什么好处。当然它也是把双刃剑,使用不当的话,也会成为开发路上的一个大坑。 目...

  • [xx class] 和 object_getClass(xx) 实现是一样的。这个 rewrite 源码成 c 代码就能看到。

    对于KVO,底层应该是交换了 NSKVONotifying_Student 的 class 方法,让其返回 Student

    /////////下文有误//////////

    这里要特别说明一下,为何打印object_getClass方法和class方法打印出来结果不同。

    - (Class)class {
    return object_getClass(self);
    }

    Class object_getClass(id obj)
    {
    if (obj) return obj->getIsa();
    else return Nil;
    }
    从实现上看,两个方法的实现都一样的,按道理来说,打印结果应该相同,可是为何在加了KVO以后会出现打印结果不同呢?

    打印这句话object_getClass(stu)的时候,isa当然是NSKVONotifying_Student。

    + (BOOL)respondsToSelector:(SEL)sel {
    if (!sel) return NO;
    return class_respondsToSelector_inst(object_getClass(self), sel, self);
    }
    当我们执行NSLog的时候,会执行上面这个方法,这个方法的sel是encodeWithOSLogCoder:options:maxLength:,这个时候,self是NSKVONotifying_Student,上面那个respondsToSelector 方法里面return的object_getClass(self)结果还是NSKVONotifying_Student。

    打印[stu class]的时候,isa当然还是NSKVONotifying_Student。当执行到NSLog的时候,+ (BOOL)respondsToSelector:(SEL)sel,又会执行到这个方法,这个时候的self变成了Student,这个时候respondsToSelector方法里面的object_getClass(self)输出当然就是Student了。

    神经病院Objective-C Runtime出院第三天——如何正确使用Runtime

    前言 到了今天终于要"出院"了,要总结一下住院几天的收获,谈谈Runtime到底能为我们开发带来些什么好处。当然它也是把双刃剑,使用不当的话,也会成为开发路上的一个大坑。 目...

  • 感谢呀,我看英文书看得晕晕的,有幸看到你的翻译...对照着看速度起飞...

  • 之前看了你这篇,感觉input output这种思路分割不错,昨天看到ReactorKit这个百多行的库。感觉里面的Action就是你这儿的input,Status就是output。mutaion操作就是你的vm。有兴趣的可以看看RxTodo这个demo

    基于RxSwift的MVVMR架构(一)思想、基本原理及初步实现

    摘要 本系列文章将详细分析iOS的MVVMR架构模式,并基于Swift的响应式、函数式编程框架RxSwift提供相应的实现。系列共分为两个部分: MVVMR架构的思想、基本原...

  • 请问下,Storage封装了网络请求和数据库操作,那么业务逻辑是在VC里做么?model是不是只是数据的表达?

    Object-C代码规范

    最近在整理代码,所以将以前积累的一些代码规范方面的知识分享出来,希望能对大家编码时有所帮助。一个好的代码风格的重要性,不言而喻,希望大家能重视。 下面是小编在平时积累的,肯定...