iOS-知识点

  • 五个案例让你明白GCD死锁:
    http://ios.jobbole.com/82622/

  • iOS开发中多线程间关于锁的使用
    http://www.cnblogs.com/huayuan320/p/6217738.html

  • Objective c中的锁 NSLock,NSConditionLock,NSRecursiveLock等定义
    http://blog.csdn.net/xiaofei125145/article/details/52003624

  • NSLock死锁:
    unlock 操作必须与lock 操作使用相同的线程,否则会出现未知错误。
    同一线程在 lock之后 未unlock 之前 再次 lock 会造成 永久性死锁。

  • 锁介绍
    http://www.jianshu.com/p/c8ed92cc43b6?utm_campaign=hugo&utm_medium=reader_share&utm_content=note&utm_source=qq

  • MJExtension底层实现原理简单剖析
    http://blog.csdn.net/petyou123/article/details/51150401

  • SDWebImage实现原理
    http://www.cnblogs.com/cleven/p/5491622.html

  • Runtime Method Swizzling开发实例汇总
    SEL、Method、IMP的含义及区别:
    在运行时,类(Class)维护了一个消息分发列表来解决消息的正确发送。每一个消息列表的入口是一个方法(Method),这个方法映射了一对键值对,其中键是这个方法的名字(SEL),值是指向这个方法实现的函数指针 implementation(IMP)
    http://www.jianshu.com/p/f6dad8e1b848

  • 响应链

/**
 事件的产生和传递:
 1、发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的事件队列中
 2、UIApplication 会从事件队列中取出最前面的事件,并将事件分发下去以便处理,通常先发送事件给应用程序的主窗口(keywindow)
 3、主窗口会在 视图层次结构中(比如window上有个view view上又有一个view) 找到最合适的视图(view)来处理触摸事件,这也是整个事件处理过程的第一步
 4、找到合适的视图控件后,就会调用视图控件的touches(touchesBegan等方法)方法来作具体的事件处理
 
 重点:
 注意:控制器也可以响应事件
 触摸事件的传递是从父控件传递到子控件 (如果两个view1和view2同级,都在当前的viewcontroller上,那先找后添加的子控件view2)
 
 传递:UIApplication - UIWindow - UIViewcontroller - UIViewcontroller上面的view - view再传给view上面的imageView,imageView响应事件,并调用touchBegin方法
 响应(响应链):imageView如果没有响应事件,那么顺着响应链找到上一级view,如果view没有响应事件,那么顺着响应链找到上一级(这里即viewController),viewController如果没有响应事件,那么传递给主窗口window,如果还没有响应,就丢弃该事件
 
 总结:传递:有点像父控件传递到子控件  一级一级往下传递
      响应:子控件没响应,就丢给父控件响应  一级一级往上响应
 
 UIView不接收触摸事件的三种情况
 默认UIImageView的userInteractionEnabled = NO 不允许接收触摸事件
 情况1、   userInteractionEnabled = NO
 情况2、   hidden = YES
 情况3、   alpha = 0
 */
  • KVC


    iOS-知识点_第1张图片
    1516249236311.jpg

你可能感兴趣的:(iOS-知识点)