面试题

作者: ricefun | 来源:发表于2020-03-05 18:41 被阅读0次

响应链:

用户点击屏幕产生事件 -> UIApplication 开始事件分发
-> UIWindow-> Subviews
UIWindow的子视图会内部递归调用

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

如果上面的方法返回视图就会调用这个方法

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
  • 当view的userInteractionEnabled为NO、hidden为YES或alpha<=0.1时,也不会打印pointInside方法。因此可以推断出在hitTest方法内部会判断如果这些条件一个成立则会返回nil,也不会调用pointInside方法。
  • pointInside只是在执行hitTest时,会在hitTest内部调用的一个方法。也就是说pointInside是hitTest的辅助方法。
  • 通过重写目标控件的pointInside: withEvent:方法可以扩大响应范围
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
    
    NSLog(@"%@ -- pointInside",self.class);
    CGRect bounds = self.bounds;
    //若原热区小于200x200,则放大热区,否则保持原大小不变
    //一般热区范围为40x40 ,此处200是为了便于检测
    CGFloat widthDelta = MAX(200 - bounds.size.width, 0);
    CGFloat heightDelta = MAX(200 - bounds.size.height, 0);
    bounds = CGRectInset(bounds, -0.5 * widthDelta, -0.5 * heightDelta);
    return CGRectContainsPoint(bounds, point);
}

响应链事件是由上至下的;触摸事件是由由下至上的;

分类关联对象

  • objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy)函数
    1.系统用一个全局的AssociationsManager去管理一张全局的AssociationsHashMap表,表中key是disguised_ptr_t(由object转化而来),valueAssociationsHashMap
    2.AssociationsHashMapkey就是上面函数中的const void *key,而valueObjcAssociation
    3.ObjcAssociation 内包含着 policy,和具体的value
    原理图
    截屏2019-11-22上午11.23.05.png
    所以关联对象并不是放在了原来的对象里面,而是系统维护了一个全局的map用来存放每一个对象及其对应关联属性表格。

weak 如何自动置为nil

相关文章

  • 面试材料

    面试经验 面试题1 面试题2 面试题3 面试题4 面试题5 面试题6――数据结构 面试题7――网络 面试题8――汇...

  • 高阶面试题

    webpack面试题 面试题:webpack插件 Git面试题 面试题:git常用命令 面试题:解决冲突 面试题:...

  • this的指向的面试题

    面试题1 面试题2 面试题3 面试题4

  • 面试所涉及的问题

    面试题参考1 : 面试题 面试题参考2 : 内存管理 面试题参考3 :面试题 ...

  • Android超实用最全面试大纲(三)

    文章目录: ANR面试题 OOM面试题 Bitmap面试题 UI卡顿面试题 内存泄漏面试题 内存管理面试题 一、A...

  • Android最全面试大纲(三)

    文章目录: ANR面试题 OOM面试题 Bitmap面试题 UI卡顿面试题 内存泄漏面试题 内存管理面试题 一、A...

  • 2022年web前端面试题

    web前端面试题分为:html/css面试题、javascript面试题、vue面试题、性能优化面试题、网络方面面...

  • ios面试题

    初级面试题 中级面试题 高级面试题 swift篇

  • Android超实用最全面试大纲(四)

    文章目录: 冷启动和热启动面试题 其他优化面试题 架构模式面试题 插件化面试题 热更新面试题 进程保活面试题 Li...

  • Android最全面试大纲(四)

    文章目录: 冷启动和热启动面试题 其他优化面试题 架构模式面试题 插件化面试题 热更新面试题 进程保活面试题 Li...

网友评论

      本文标题:面试题

      本文链接:https://www.haomeiwen.com/subject/cjfcrhtx.html