当OC的可变数组(NSMutableArray)添加 nil 对象时,首先会弹出警告 “Null passed to a callee that requires a non-null argument”,也就是说数组不能传递非空参数。
成都创新互联主营江门网站建设的网络公司,主营网站建设方案,app软件定制开发,江门h5微信小程序定制开发搭建,江门网站营销推广欢迎江门等地区企业咨询
_objc_msgForward是一个函数指针(和 IMP 类型一样),用于消息转发的:当向一个对象发送一条消息,但它并没有实现的时候,_objc_msgForward会尝试做消息转发。
因为给nil对象发送消息不会有反应哦。可以使用__weak关键字声明一个弱变量:强变量:通常在ARC中所有指针变量都是强变量。将对象引用obj_new赋值给obj_old会使obj_new对象自动保持,同时旧对象obj_old会在被赋值千被释放。
第一种:新建一个相同类型的对象并指向它,这样做 result 就会强引用 tempResult,当做返回数据返回之后会自动添加 autorelease 关键字,也就不会造成野指针异常。
iOS的事件分发机制是为了找到第一响应者,事件的处理机制叫做响应者链原理。 所有事件响应的类都是 UIResponder 的子类,响应者链是一个由不同对象组成的层次结构,其中的每个对象将依次获得响应事件消息的机会。
1、当事件发生的时候,响应链首先被发送给第一个响应者(往往是事件 发生的视图,也就是用户触摸屏幕的地方)。事件将沿着响应者链一 直向下传递,直到被接受并作出处理。
2、一个UIWindow对象在某一时刻只能有一个响应者对象可以成为第一响应者。 成为第一响应者必须要canBecomeFirstResponder,才能becomeFirstResponder。
3、在UIKit中,UIApplication、UIView、UIViewController这几个类都是直接继承自UIResponder类。另外SpriteKit中的SKNode也是继承自UIResponder类。
4、寻找到最佳响应者后,事件就在响应链中的传递及响应了。
点击一个UIView或产生一个触摸事件A,这个触摸事件A会被添加到由UIApplication管理的事件队列中(即,首先接收到事件的是UIApplication)。
当事件发生的时候,响应链首先被发送给第一个响应者(往往是事件发生的视图,也就是用户触摸屏幕的地方)。事件将沿着响应者链一直向下传递,知道被接受并作出处理。
UIKit发送事件到父UIView对象,然后是窗口的根视图(UIWindow)。在将事件定向到窗口之前,响应器链从根视图转移到所属的视图控制器。