2009-04-05 35 views
13

Có ai đã dành thời gian so sánh các cầu mục tiêu C khác nhau và trình bao bọc Cocoa liên quan cho Mono không?Xây dựng giao diện người dùng Cocoa cho OS X với C# và Mono

Tôi muốn chuyển một ứng dụng C# hiện có để chạy trên OS X. Lý tưởng nhất là tôi chạy ứng dụng trên Mono và xây dựng một giao diện người dùng Cocoa gốc cho nó.

Tôi tự hỏi cây cầu nào sẽ là lựa chọn tốt nhất.

Trong trường hợp đó là hữu ích cho bất cứ ai, đây là một số liên kết đến các cầu tôi đã tìm thấy cho đến nay:

Trả lời

5

Đội Mono đã phát hành một cây cầu mới có tên là MonoMac.

Đây thực chất là phiên bản dành cho máy tính để bàn của khung MonoTouch mà họ đã tạo cho iPhone.

Miguel bố cây cầu mới trên blog của mình ở đây: http://tirania.org/blog/archive/2010/Apr-19.html

Khi MonoMac trưởng thành, tôi nghi ngờ rằng nó sẽ trở thành các cầu người sử dụng.

0

Không đi hỏi tại sao, vì bạn có lý do tôi chắc chắn.

Tôi sẽ xem xét dự án Unity3D và xem bạn có thể giải thích cách họ đã thực hiện nó hay không. Trông, um, cứng.

+0

Cảm ơn bạn đã trả lời. Trên thực tế, tôi đã quan tâm đến các cây cầu đã tồn tại, thay vì viết một cái mới ... –

1

Tôi nghĩ rằng NObjective là coz tốt nhất cho phép nó tạo mã tự động cho trình bao bọc Objective-C có thể dễ dàng được cấu hình để tạo lại trình bao bọc cho các phiên bản tiếp theo của Mac OS.

+0

Bất kỳ nhận xét nào về những gì bạn đã sử dụng cho hoặc những vấn đề bạn gặp phải? –

1

OK, tôi sẽ hỏi: tại sao bạn muốn thực hiện việc này? Kiến trúc giao diện người dùng của Cocoa, bao gồm các sản phẩm cacao và cacao được liên kết chặt chẽ với Objective-C. Sự kết hợp của Interface Builder và Objective-C là hiệu quả đáng kể. Mặc dù bạn có thể sử dụng Interface Builder với nhiều bridge đến Objective-C (bao gồm PyObjC, MacRuby và nhiều cầu C#), bạn chắc chắn sẽ mất năng suất do bất kỳ sự không phù hợp trở kháng nào giữa khung công tác và ngôn ngữ bạn chọn. Với C#, sự không khớp này là đáng kể. Kể từ khi bạn đang viết một giao diện người dùng bản địa, do đó mất bất kỳ lợi thế nền tảng bạn sẽ đạt được từ C#, tôi sẽ sử dụng Objective-C. Đối với C/C++/C#/Java/etc có thẩm quyền. lập trình viên, thường mất 2-3 ngày để trở nên thoải mái và hiệu quả trong Objective-C.

+1

Câu trả lời ngắn gọn: Tôi không bắt đầu bằng phương tiện chặn sạch. Tôi muốn xây dựng giao diện người dùng Cocoa cho ứng dụng C# hiện có (trái ngược với việc sử dụng GTK # hoặc WinForms). Không đáng sao chép mã hiện tại của tôi trong Mục tiêu C, sau đó duy trì hai bộ mã tương đương trong tương lai. –

+0

Nhưng bạn vẫn có thể sử dụng Objective-C cho giao diện người dùng và sử dụng một trong các cây cầu được liệt kê trong câu hỏi của bạn để sử dụng lại mã mô hình hiện tại của bạn. Đây là phương pháp được đề xuất cho các ứng dụng đa nền tảng trên OS X. –

+2

Tôi đã dành hơn 2-3 ngày với Objective-C ngay bây giờ, và trong khi tôi thấy nó sạch hơn C++, nó vẫn thấp hơn đáng kể so với C# . Là một lập trình Python, ngay cả C# cảm thấy mức độ khá thấp và dài dòng. Bạn kiếm được rất nhiều năng suất bằng cách đi với một ngôn ngữ cấp cao hơn. Một cây cầu C# -Objc được viết tốt sẽ lý tưởng cho bạn ăn phần lớn bánh của bạn và ăn nó. – Andz

3

Tôi đã thử Monobjc, NObjective và MObjc/MCocoa với F # gần đây và tôi sẽ đi với MObjc/MCocoa.

Monobjc là khi bạn viết tài liệu và đóng gói tốt nhất nhưng so với hai loại khác rất slow và không "rút lại ngoại lệ" khỏi ObjC.

Tôi tin rằng NObjective và MObjc/MCocoa là hai người duy nhất loại trừ các ngoại lệ từ ObjC và đó là lý do tại sao tôi thấy chúng là những lựa chọn thay thế thực sự duy nhất.

Như đã thảo luận here Sử dụng không có cấu trúc với thừa kế mà tôi thấy khá đáng sợ và khiến tôi cuối cùng chọn MObjC/MCocoa.

(Bạn có thể có một vấn đề giấy phép là tốt. Monobjc và NObjective là dưới LGPL, MObjc/MCocoa thuộc MIT ...)

+0

Johan Tôi đã xóa cờ trả lời được chấp nhận khỏi câu trả lời của bạn. Xin đừng xúc phạm điều này. Câu trả lời của bạn vẫn có giá trị, nhưng tôi cảm thấy MonoMac là con đường phía trước. Tôi muốn trang này phản ánh điều đó. –

+0

Không có hành vi phạm tội ... :) Tôi cũng tin rằng việc phát hành MacMono đã thay đổi tình hình ... –

1

Một cuộc thảo luận khá dài của những cây cầu khác nhau đã diễn ra trên Mono Danh sách gửi thư OSX.

Các cuộc thảo luận bắt đầu here với Miguel:

  • bố rằng Cocoa # sẽ không còn được duy trì bởi Novell.
  • Cố gắng thống nhất những nỗ lực còn lại trong cộng đồng.

Nếu bạn đọc phần còn lại của cuộc thảo luận, có vẻ như cộng đồng Mono đang nghiêng về phía Monoobjc hoặc MObjc/MCocoa; vì vậy nếu bạn đang thực hiện các cuộc điều tra của riêng mình thì đây có lẽ là những điều cần chú ý.

+0

Tôi đã thêm một câu trả lời mới cho câu hỏi này tập trung vào MonoMac. Tôi để lại câu trả lời này bị ảnh hưởng trong trường hợp các chi tiết hữu ích cho những người quan tâm đến cách MonoMac xuất hiện. –

Các vấn đề liên quan