2014-09-04 29 views
0

我得到了一個** .framework *文件,並且我使用類轉儲知道里面有一個名爲ABC的類,並且不會暴露任何東西,和ABC對我來說有一個有用的方法,所以我不知道我可以通過Objctive-C運行時動態調用ABC's方法。等待你的幫助!Objctive-c在運行時調用類方法,該類是私人的

+1

是的,你可以,但如果你要提交你的應用程序到appstore,它可能會因爲使用私有方法而被拒絕。 – rckoenes 2014-09-04 08:33:32

+0

你能告訴我如何編寫代碼來做到這一點嗎?謝謝 – billwang1990 2014-09-04 08:48:08

回答

2

要如果它的名字使用NSClassFromString創建類的實例:

Class myPrivateClass = NSClassFromString(@"MyPrivateClass"); 
myPrivateClass *myPrivateObj = [myPrivateClass new]; 

現在,你有這個類的實例調用的選擇,以方便你可以投的實例NSObject

[(NSObject *)myPrivateClass performSelector:@selector(description) withObject:nil]; 

或者類方法:

[myPrivateClass performSelector:@selector(description)]; 

在這裏,我在實例和類上調用description

+0

這裏是我的代碼'類SecurityUtils = NSClassFromString(@「SecurityUtils」);我可以得到類SecurityUtils,但選擇器爲空,你能告訴我什麼是問題 – billwang1990 2014-09-05 01:37:07

+0

如果選擇器爲空,這意味着它不可能是從給定的字符串創建。 – rckoenes 2014-09-05 07:07:23

+0

對不起,我忘了在'Other Link Flag'字段中添加'-all_load' – billwang1990 2014-09-09 02:12:44

相關問題