ios常见概念总结

本文深入探讨了iOS中的事件传递机制和响应者链,详细解释了从UIApplication到UIWindow再到各个视图的传递过程,以及如何通过hitTest方法判断触摸点。此外,还介绍了KVC和KVO在访问私有属性和观察变化中的作用,以及Runloop对保持线程运行的重要性。最后,简要概述了多线程中的GCD概念,强调了同步异步、串行队列和并发队列的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事件传递机制和响应者链:总体来说,事件传递机制是从上到下,从父控件到子控件的,响应者链相反。事件传递从最上层的UIApplication--UIWindow--父容器-子容器这个流程来进行传递。这些从上到下的控件就是响应者,而这些响应者构成了响应者链。响应者自下而上,直到有touches...方法来响应.

①.首先判断主窗口(keyWindou)自己是否能接受触摸事件
②.判断触摸点是否在自己身上(

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

)
③.子控件数组中从后往前遍历子控件,重复前面两个步骤(所谓从后往前遍历子控件,就是首先查找子控件数组中最后一个元素,然后执行1、2步骤)
④.如果没有符合条件的子控件,那么就认为自己最合适处理这个事件,也就是自己是最合适的view。

kvc和kvo: kvc主要用于访问私有属性。kvo是观察者模式在ios的体现。kvc的流程是setter/getter---- _key,_iskey,key,isKey.

runloop:保证线程可以使一些事件(比如定时器)等持续运行。

多线程:http://www.cocoachina.com/articles/19769

多线程总结下:常用的是Gcd,主要是理解同步异步(异步具有开启新线程的能力),串行队列和并发队列(并发队列是多个任务同时执行)的概念,在主线程里完成ui的刷新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值