Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在类别中创建代理_Ios_Objective C_Delegates_Objective C Category - Fatal编程技术网

Ios 在类别中创建代理

Ios 在类别中创建代理,ios,objective-c,delegates,objective-c-category,Ios,Objective C,Delegates,Objective C Category,是否可以在类别中创建代理 比如说,我有一个类别UIImageView ImagePicker,在其中我创建了一些方法,所有方法都工作得很好 但是,我需要在这个类别中添加一个委托,比如说UIImageViewDelegate。因为在UIImageView ImagePicker实现的某个时刻,我需要它来触发一个事件,并且我希望用户捕获这个事件 因为我正在创建一个类别,类别中不允许使用属性。因此,我似乎无法添加这样的委托,因为据我所知,要创建委托,您必须始终在接口中创建如下属性: @property

是否可以在类别中创建代理

比如说,我有一个类别UIImageView ImagePicker,在其中我创建了一些方法,所有方法都工作得很好

但是,我需要在这个类别中添加一个委托,比如说UIImageViewDelegate。因为在UIImageView ImagePicker实现的某个时刻,我需要它来触发一个事件,并且我希望用户捕获这个事件

因为我正在创建一个类别,类别中不允许使用属性。因此,我似乎无法添加这样的委托,因为据我所知,要创建委托,您必须始终在接口中创建如下属性:

@property (weak, nonatomic) id <UIImageViewDelegate> delegate; 
有人知道这件事吗

编辑:

这个范畴的逻辑,


此类别的功能是允许用户通过从photo.app中选择照片来设置UIImageView的UIImage。该类别处理所有流程,包括UI交互。现在我需要一个代理在设置图像时回拨给用户。

您的问题归结为如何在类别中创建属性。您需要使用关联的对象。看到这个问题的答案:也考虑一个类别或包装对象是一个更好的实现您的情况。在这一点上,您应该考虑创建一个适当的子类的UIVIEVIEW。很难确定,因为没有足够的细节来说明你在做什么。类别只能用于添加一两个新方法。当您真正拥有一个专门的UIImageView时,您需要一个子类.Btw。如果属性未由实例变量备份,则可以在类别中定义属性。所以这对这里没有帮助:@rmaddy是的,但是如果只通过一个类别就可以做到的话,它可能会更酷。因为除了委托之外,其余函数都能正常工作