1

在 .NET 中,如果您编译某些内容,则可以对其进行反编译并使用Reflector等程序查看源代码。

我了解 Objective C 的基础知识,并且宁愿尝试使用 Objective C 而不是 MonoTouch。我使用 MonoTouch 的原因是因为有些事情我不知道如何用 Objective C 来做。

例如:

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

我整天都在尝试用 Objective C 做这两行代码,但我做不到。无论如何,我想知道是否有可能像 Reflector 一样将 MonoTouch 变成 Objective C,以用于学习。

4

2 回答 2

1

我知道没有工具可以将 MonoTouch C# 转换为 Obj-C。

您可能想查看MT Rosetta Stone,它将各种 MT C# 类和方法映射到它们的 Obj-C 对应物。

于 2012-05-01T12:15:02.150 回答
1

反射器(和类似工具)通过读取编译代码(即程序集)的IL来工作。然后他们让您将此 IL反编译成高级.NET语言,例如 C#、VB.NET、Delphi、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)汇编代码。

于 2012-05-01T12:18:54.247 回答