2012-05-01 141 views
1

在.NET中,如果編譯某些東西,可以使用程序(如Reflector)對其進行反編譯並查看源代碼。MonoTouch目標C

我知道Objective C的基礎知識,寧願嘗試使用Objective C而不是MonoTouch。爲什麼我使用MonoTouch的原因是因爲有一些事情,我不知道如何與目標C.

做例如:

UdpClient client = new UdpClient("192.168.0.120",5050); 
client.Send(new byte[]{0,1,2,3,4},5); 

我嘗試了一整天做的那些代碼兩行目標C和我不能。無論如何,我想知道是否有可能將MonoTouch變成Objective C,就像Reflector一樣,爲了學習的目的。

+0

如果UdpClient是一個.NET類,您將不得不查看BSD套接字API,並在C中執行此操作,而不是使用objective-c。 –

+1

CFSocket對象封裝了BSD套接字API以方便使用。 https://developer.apple.com/library/mac/#documentation/Networking/Conceptual/CFNetwork/Introduction/Introduction.html –

+0

「將monotouch變成目標c就像反射鏡一樣」...反射器沒有這樣的事情。 – borrrden

回答

1

反射(以及類似的工具)的作品通過閱讀你的編譯代碼(即組件)的IL。然後他們爲您提供反編譯此IL爲高級.NET語言,例如。 C#,VB.NET,德爾福,F#...

,因爲生成的代碼往往會看起來像,一些接近,原來的源代碼(減去丟失的東西,因爲它們不是的一部分。這可能是有用的IL,元數據或調試符號),這可能是一個很好的學習工具。

這對您的情況不起作用,因爲Objective C不是.NET語言(並且AFAIK沒有人制作.NET版本)。在理論這樣的工具可以顯示語法非.NET語言,但實際上,它不會很有幫助。

爲什麼?所得到的源代碼將不會編譯回可執行代碼,例如Objective C編譯器不會找到所有對基類庫(.NET BCL)的調用。由於BCL和Apple提供的不同框架(iOS和OSX)完全不同(例如您的UdpClient示例代碼),因此它不會真正幫助您學習iOS開發。

注意: MonoTouch不會將C#(或.NET)轉換爲Objective C代碼。 JIT(模擬器)或AOT(器件)編譯器將直接發出本地(i386或armv6/7)彙編代碼。

1

我沒有注意到將MonoTouch C#轉換爲Obj-C的工具。

您可能想看看MT Rosetta Stone,它將各種MT C#類和方法映射到它們的Obj-C對應項。