Trước hết, Xamarin hoạt động trên hai runtimes khác nhau tại cùng một thời gian:
- Mono
- Native runtime (Davlik, ART, iOS runtime)
Một số ví dụ. Khi bạn tạo lớp C# của riêng bạn trong Visual Studio, cá thể của lớp này sẽ chạy dưới Mono. Ngoài ra khi bạn đang tải Newton.Json gói từ nuget, điều này sẽ chạy trong Mono quá. Đây là lý do tại sao chúng tôi có thể sử dụng tất cả các công cụ tuyệt vời. Tuy nhiên, khi bạn kế thừa từ Java.Lang.Object (Android) hoặc NSObject (iOS) hoặc thực hiện một tùy chỉnh, các cá thể của các lớp này sẽ chạy dưới thời gian chạy nguyên gốc.
Thứ hai, bạn có thể nhận thấy rằng chúng ta cần ràng buộc hai thế giới này bằng cách nào đó. Chúng ta hãy xem chúng ta có loại đối tượng nào.
- đối tượng được quản lý (Mono)
- đối tượng Unmaneged (thế giới Native)
- đối tượng Peer (Mono, các đối tượng đó là giấy gói cho các đối tượng có nguồn gốc)
Peer đối tượng đó là trường hợp của lớp SDK Xamarin (ví dụ các hoạt động, xem các điều khiển, UILabels, TextViews và vv), các trường hợp kế thừa của riêng bạn từ các lớp Java.Lang.Object, NSObject, Fragment hoặc thậm chí là UISegment.
Cơ chế đó là một trong những điều quan trọng nhất từ Xamarin.
PS: Thực ra, việc chúng tôi sử dụng các dự án Xamarin JIT hoặc AOT là không quan trọng. Nó phụ thuộc vào nền tảng và cho phép/không cho phép một số tính năng từ thế giới .NET. Điều đó không mô tả cách thức hoạt động của Xamarin.
Nguồn
2017-06-17 08:11:48
dll trong gói iOS chỉ đơn giản là siêu dữ liệu được sử dụng để phản chiếu chứ không phải mã thực thi. Xem http://stackoverflow.com/questions/10741319/how-secure-is-monotouch – Jason