热门搜索 :
考研考公
您的当前位置:首页正文

iOS-知识点

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

  • 响应链

/**
 事件的产生和传递:
 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


    1516249236311.jpg
Top