在Objective-C中创建匿名委托对象

在Objective-C中创建匿名委托对象,第1张

概述Cocoa广泛使用委托来提供(除其他外)异步 *** 作的回调方法.但是,我个人讨厌委托模型以及它如何使用处理程序对非常特定的子 *** 作污染当前类. UIAlertView就是一个很好的例子. 因此,我想知道是否可以通过块简单地创建满足委托协议(例如UIAlertViewDelegate)要求的匿名委托对象,并在需要委托引用的任何地方传递此匿名对象. 我想象的是: id myDelegate = @{ Cocoa广泛使用委托来提供(除其他外)异步 *** 作的回调方法.但是,我个人讨厌委托模型以及它如何使用处理程序对非常特定的子 *** 作污染当前类. UIAlertVIEw就是一个很好的例子.

因此,我想知道是否可以通过块简单地创建满足委托协议(例如UIAlertVIEwDelegate)要求的匿名委托对象,并在需要委托引用的任何地方传递此匿名对象.

我想象的是:

ID myDelegate = @{    alertVIEw:alertVIEw dIDdismissWithbuttonIndex:index = ^ {        ...    }};UIAlertVIEw* alertVIEw = [[UIAlertVIEw alloc] initWithTitle:... message:... delegate:myDelegate cancelbuttonTitle:... otherbuttonTitles:...;[alertVIEw show];

我听说Objective-C有一些很好的动态语言功能,但我不知道如何简单地向对象添加方法/选择器.这可以以相对简单的方式完成吗?

解决方法 是的,你提到的语言功能是通过 objective-c runtime公开的,虽然没有动态创建委托类的内置工具,而运行时API并不是最友好的东西.

有一个名为A2DynamicDelegate的图书馆,它正是您正在谈论的内容.我没有使用它,但它可能值得调查.

编辑:这种方法的一个问题是不保留委托,因此您需要在其他地方保留强引用,或者添加UIAlertVIEw的关联引用.您可能会发现所有这些大惊小怪都不值得,只需在视图控制器中添加额外的方法就可以更好地工作(您可以在类扩展中符合委托协议以避免污染您的界面).

总结

以上是内存溢出为你收集整理的在Objective-C中创建匿名委托对象全部内容,希望文章能够帮你解决在Objective-C中创建匿名委托对象所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1024378.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存