2010-02-02 52 views
1

NSInvocation的似乎是在可可的設計最差的功能之一,所以我決定來檢查,如果有人寫了一個配方,使使用更方便。我在Matt Gallagher's blog找到了一份食譜。現在爲了能夠做到這一點,他使用了一些非常黑客的技巧。效用函數爲NSInvocation的

  1. 你會推薦使用這段代碼還是這種技術可能導致難以調試的錯誤?
  2. 如果不是,您會推薦什麼?
+0

對於要使用'NSInvocation'什麼目的?這是一種相當內在的東西,你不會經常使用,除非你想做一些棘手的事情。通常,只需調用方法本身或使用KVC即可。所以建議取決於你想做什麼。 – Yuji 2010-02-02 00:49:15

+0

只是爲了添加方法定時器 – Casebash 2010-02-02 00:56:44

回答

2

使用。它絕對採用了一些奇怪的技術,但它不是以任何方式脆弱的破解:它堅如磐石,速度與創建NSInvocation的速度一樣快。

,我也曾有(長,因爲固定的)代碼中的一個保留計數錯誤,但它沒有難以調試這裏保留數比其他任何地方。

當然,我的意見是完全偏向。

+0

它很酷居然有博客作者回答這個問題,但我實際上是尋找第二意見= P – Casebash 2010-02-02 22:17:02

+0

讀你的一些其他的博客文章中我已經決定,我會照顧相信你的看法是堅如磐石的 – Casebash 2010-02-12 03:57:08

0

最簡單的效用函數將具有以下接口

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

這將有NIL無法通過在參數的缺點。我覺得應該有一個更好的解決方案

UPDATE:NSNull可我已經用在幾個航運iPhone產品和Mac產品這NSInvocation的方法字典,而不是零