NSInvocation似乎是Cocoa中设计最差的函数之一,因此我决定检查是否有人编写了一个配方来使其更容易使用。我在Matt Gallagher's blog找到了食谱。现在能够做到这一点,他使用了一些相当神圣的技术。
答案 0 :(得分:2)
我在一些iPhone产品和Mac产品中使用了这种NSInvocation方法。它肯定采用了一些奇怪的技术,但它绝不是一个脆弱的黑客攻击:它坚如磐石,并且与NSInvocation创建的速度一样快。
我在代码中短暂地有一个保留计数错误(早已修复)但是这里调整保留计数并不比其他地方更难。
当然,我的观点完全有偏见。
答案 1 :(得分:0)
最简单的效用函数将具有以下接口
+ (id)retainedInvocationWithTarget:(id)target invocationOut:(NSInvocation
**)invocationOut args:NSDictionary;
这样做的缺点是无法为参数传入nil。我认为应该有更好的解决方案
更新:NSNull可用于词典而不是nil