NSInvocation的实用程序功能

时间:2010-02-02 00:45:25

标签: objective-c cocoa

NSInvocation似乎是Cocoa中设计最差的函数之一,因此我决定检查是否有人编写了一个配方来使其更容易使用。我在Matt Gallagher's blog找到了食谱。现在能够做到这一点,他使用了一些相当神圣的技术。

  1. 您是否建议使用此代码,或者此技术是否太可能导致难以调试的错误?
  2. 如果没有,你会推荐什么?

2 个答案:

答案 0 :(得分:2)

我在一些iPhone产品和Mac产品中使用了这种NSInvocation方法。它肯定采用了一些奇怪的技术,但它绝不是一个脆弱的黑客攻击:它坚如磐石,并且与NSInvocation创建的速度一样快。

我在代码中短暂地有一个保留计数错误(早已修复)但是这里调整保留计数并不比其他地方更难。

当然,我的观点完全有偏见。

答案 1 :(得分:0)

最简单的效用函数将具有以下接口

+ (id)retainedInvocationWithTarget:(id)target invocationOut:(NSInvocation
**)invocationOut args:NSDictionary;

这样做的缺点是无法为参数传入nil。我认为应该有更好的解决方案

更新:NSNull可用于词典而不是nil