2013-05-16 1 views
2

C# iOS 용 모노 개발에는 Apple의 코드 사전 컴파일 요구 사항으로 인해 특정 제한이 있습니다. 즉 JIT 컴파일이 허용되지 않습니다. 이 때문에 Reflection.Emit와 같은 호출은 지원되지 않습니다. 하지만 C#에서 iOS 용으로 컴파일 된 C# 다이나믹을 사용할 수 있는지 궁금합니다. 예를 들어MonoTouch는 C# 다이나믹스를 지원합니까?

:

repository.Find (repository.UserName == "존");

여기서 "저장소"는 정적 메서드 "찾기"와 동적 속성 "UserName"이있는 동적 개체입니다. 이 접근 방식은 모든 현대 Windows 기반 .NET 플랫폼에서 잘 작동하며, Android 용 Mono에서도 작동합니다. MonoTouch는 어떻습니까? 원칙적으로 런타임 정보를 기반으로 동적 속성을 동적으로 해결하는 데 제약이 있어서는 안됩니다. 애플이 법적으로 제약을받지 않는다면 말입니다.

+3

http://tirania.org/monomac/archive/2011/Apr-06.html에서 : * 중요한 제한 사항 중 하나가 있습니다. 동적 코드 생성이 필요하므로 C# 4.0 동적 지원이 작동하지 않습니다. * –

+1

그 유감! 그러나 모든 역동적 인 것은 코드 생성에 관한 것이 아닙니다. 또는 Apple이 매우 엄격하여 사전 컴파일 된 바이너리를 발생시키지 않는 언어 구문이 금지됩니까? 설명해 주셔서 감사합니다. –

+1

그건 내 이해, 예. Apple은 iOS 응용 프로그램 내에서 모든 코드를 사전 승인합니다. 생성 된 코드는 생성 될 때까지 존재하지 않으므로 코드를 제어 할 수 없습니다. –

답변

3

마지막으로 확인한 바와 같이 Apple의 JIT 금지로 인해 동적 지원되지 않습니다. Android Xamarin 도구에서 동적 키워드를 활용할 수 있지만 Apple은 사전 컴파일 된 코드가 필요합니다. 이러한 도구를 사용하여 다양한 플랫폼에서 작업하는 방법에 대한 개요를 설명하는 .NET Rocks 포드 캐스트가 있습니다.

+2

감사합니다. 그리고 한숨 :-( –

관련 문제