Objective-C传递数据小技巧

转自:http://www.guokr.com/blog/203413/

比如说,如果你想向UIAlertView的delegate方法中传递一些信息,怎么办?继承UIAlertView么?使用Category?都可以,其实还有一个更简单的办法,那就是使用objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy)函数。这个函数定义在objc/runtime.h中。

首先,定义一个全局静态变量,用它的地址作为key。
static char alertInfoKey;

然后,在你alloc UIAlertView的地方调用objc_setAssociatedObject。如图。

policy使用OBJC_ASSOCIATION_RETAIN,这样会自动retain你想传递的对象,也不用担心内存泄漏的问题,因为它会在alertView释放的时候自动release。

接下来,你就可以在UIAlertView的delegate方法中获取传递的对象了。

这个方法简单方便。越是简单,越易滥用,请酌情使用。

原文地址:https://www.cnblogs.com/dokaygang128/p/3889758.html