我做動態類加載的原因是因爲我正在創建一組可用於多個類似項目的文件,因此執行#import然後正常實例化將不起作用。動態類允許我這樣做,只要我可以在這些類中調用方法。每個項目都有這與不同的「kMediaClassName」的名字PCH這樣我就可以動態加載基於項目我在不同的類別:如何在我使用NSClassFromString動態創建的類中調用方法?
#define kMediaClassName @"Movie"
這裏是我用得到的一個實例的代碼類動態:
Class mediaClass = NSClassFromString(kMediaClassName);
id mediaObject = [[[mediaClass alloc] init] autorelease];
然後我嘗試調用動態類中的方法:
[mediaObject doSomething];
當我再輸入到Xcode中,編譯器顯示一個警告,類不沒有這種方法,即使它有。我可以在我的Movie.h文件中看到它。到底是怎麼回事?我如何從動態實例化的類調用方法?
如果我需要傳遞多個參數呢?
[mediaObject loadMedia:oneObject moveThe:YES moveA:NO];
感謝您的幫助提前。
如果我需要多個參數傳遞給方法?例如:`[mediaObject loadMedia:oneObject moveThe:YES moveA:NO];` – 2011-02-05 22:13:55
然後使用像Joe Blow這樣的NSInvocation已經提出,它是您在這種情況下最好的選擇。 – JustSid 2011-02-05 22:15:49
您可以隨時使用objective-c運行時功能來完成該功能。請看我的答案:) – nacho4d 2011-02-05 23:00:51