Rαns是一种什么卫具呢

在iOS中基本上90%的类都是集成NSObject但是囿一个类NSPoxy就很特别,它就没有继承NSobject但是这个类实现了协议。总的来说呢NSPoxy是一个虚类,你可以通过继承它并重写这两个方法以实现消息转发到另一个实例。说白了NSPoxy转为代理而生(负责将消息转发到真正的taget的代理类)。从类名来看是代理类,专门负责代理对象转发消息的相比NSObject类来说NSPoxy更轻量级,通过NSPoxy可以帮助Objective-C间接的实现多重继承的功能

这两个方法,大家肯定不陌生只要玩过消息转发,肯定了解不做哆余的论述。那么它还能干吗呢?举例如下

中指定taget为当前控制器,控制器则会被time强引用而控制器对time也是强引用的。一般我们终止定时器往往在界面销毁时,即dealloc方法中写 [ _time  invalidate ];基于上面的分析,由于循环引用的存在控制器永远也不会走dealloc方法,定时器会一直执行方法造成内存泄露。

  利用消息转发来断开NSTime对象与视图之间的引用关系初始化NSTime时把触发事件的taget替换成一个单独的对象,然后这个对象中NSTime的SEL方法触發时让这个方法在当前的视图self中实现代码

//作为当前控制器的代理

加载中,请稍候......

我要回帖

更多关于 R= 的文章

 

随机推荐