2011-01-12 46 views
3

我在Monotouch中的P/Invoke的知識是相當可怕的,我想調用一個UITextView(特別是setContentToHTMLString)的私人iOS API,我不知道甚至從哪裏開始。如何從Monotouch調用私有API?

如果有人能告訴我這是如何完成的(甚至從哪裏開始!),這將是輝煌的。

只是要注意,這是爲了我正在做的個人項目,主要是爲了拓寬我的知識面。該應用程序被提交到應用程序商店的機會非常渺茫,因此它不受App Store規定/ Apple改變它的可能性的限制。

編輯

難道只是簡單地使用Selector的情況?

回答

2

使用一個選擇,這樣稱呼它最簡單的方法:

Selector s = new Selector("myPrivateAPIMethodName"); 
MyObjectToCallTheMethodOn.PerformSelector(s, parameterOfTheObject, 0); 

當然,非常小心這個..蘋果不會容忍你的應用程序專用的API調用,因此,如果您正在計劃以類似於API的方式去AppStore,就像你想要的那樣,他們會拒絕你的應用。

0

如果您嘗試調用私有.net方法,則可以使用反射。

可以使用下面的代碼作爲示例:

  object oToInvoke; 

     //Get the type of object 
     Type t = typeof(oToInvoke); 

     //Invoke 'PrivateMethodName' 
     return t.InvokeMember("PrivateMethodName", 
          System.Reflection.BindingFlags.NonPublic 
         | System.Reflection.BindingFlags.Instance 
         | System.Reflection.BindingFlags.InvokeMethod 
         , null 
         , oToInvoke 
         , null); 

這將允許調用其可以具有返回類型的方法。你只需要投InvokeMember

的返回類型

那在System.Reflection命名空間

希望幫助!

+0

不幸的是,我想調用一個本機iOS對象(Objective-C)的私有API,所以這不起作用。但是,我不知道如何調用private .net方法,所以這非常有用,謝謝! – Luke 2011-01-12 11:38:58

+0

好吧,不用擔心,我開始學習iOS開發,所以如果有可能生病了:) – WraithNath 2011-01-12 11:43:45