2009-08-17 94 views

回答

8

我不覺得有一個類級別的等價物,但是你可以交換兩種方法的實現,這往往是使用poseAsClass:的目的(當然如果你需要的話可以交換多個方法重寫類中的多個方法)。 Objective-C 2.0運行庫中需要method_exchangeImplementations#import objc/runtime.h)。一句警告:在調用method_exchangeImplementations之後,調用'new'方法實際上會調用原始方法定義。

+0

謝謝!我設法使用mcandre的答案和您鏈接的文檔的組合來實現這個目標。快速提示:爲了使用您描述的方法,我必須#include「objc/runtime.h」''。 – 2009-08-17 21:25:41

7

Lap Cat給出了一種替代方案。

+0

+1並感謝您的優秀鏈接 – 2009-08-17 21:23:44

2

你想做什麼?經常有擺姿勢的方法。但我會承認它有時是唯一的方法:)

+0

我試圖跟蹤Cocoa應用程序中的所有綁定(和解除綁定)消息。無論何時在一個對象與另一個對象之間進行綁定時,我都想要「NSLog()」一些調試信息。我最終在'NSObject'的綁定方法中使用了'method_exchangeImplementations',並且它實現了這個訣竅。 – 2009-08-18 13:46:57

+0

聽起來就像你在做正確:)我會在運輸代碼時謹慎行事。 – 2009-08-19 10:28:34