2010-04-23 28 views
11

Lời chào, Tôi là một lập trình viên C#. Tôi đang lập kế hoạch để bắt đầu phát triển ứng dụng cho iphone nhưng tôi không chắc chắn nếu tôi nên sử dụng C# theo MonoTouch hoặc chỉ sử dụng ngôn ngữ mẹ đẻ cho hệ điều hành iphone Mục tiêu C.MonoTouch & C# VS Mục tiêu C cho ứng dụng iphone

Có sự khác biệt cho chương trình cho ứng dụng iphone bằng C# hoặc mục tiêu C?

Có giới hạn khi sử dụng C# để lập trình ứng dụng cho iphone hay nó có thể làm nhiều như mục tiêu C có thể làm để phát triển ứng dụng iphone?

+2

Tôi tin rằng câu hỏi này bao gồm mặt đất giống như một trong những yêu cầu ở đây: http://stackoverflow.com/questions/1583856/is-monotouch-worth-the-cost-or-should-i-just-learn- Mục tiêu-c –

+0

Nó hiện ... nhưng bây giờ câu hỏi này có một bối cảnh khác nhau, do các điều khoản mới của Apple không cho phép (kỹ thuật) các ứng dụng biên dịch chéo. – Armstrongest

Trả lời

12

Kết thúc monoTouch nhất nhưng không phải tất cả SDK iPhone. Vì vậy, có những điều bạn không thể làm (chưa), nhưng chúng tương đối ít và xa.

Nhiều người .Net thấy rằng họ hiệu quả hơn (ít nhất là ban đầu) sử dụng MonoTouch, vì họ có thể tận dụng các kỹ năng hiện có của họ. Mặt khác, không có gì giống như làm việc bằng ngôn ngữ bản xứ của đất, nó chỉ mất lâu hơn một chút. Bạn sẽ phải tìm hiểu một số Objective-C vì hầu hết các tài liệu có trên thế giới sử dụng nó (và/hoặc các API CoreFoundation C cấp). Bản chất năng động của Objective-C sẽ cảm thấy nước ngoài lúc đầu, nhưng bạn có thể thấy nó hoàn toàn giải phóng khi bạn rên nó hoàn toàn. Đã sử dụng nhiều ngôn ngữ trong sự nghiệp của tôi, tôi thấy Objective-C (và API Cocoa) là một trong những trải nghiệm phát triển dễ chịu nhất trên mạng.

+0

Tuyên bố "họ đã chọn để cho phép ứng dụng MonoTouch qua" dựa trên là gì? –

+0

@yar, một số nhà phát triển đã báo cáo rằng các ứng dụng dựa trên MonoTouch của họ đã được chấp nhận sau khi họ chấp nhận giấy phép nhà phát triển mới. Không rõ liệu Apple đã chọn không thực thi ß3.3.1 cho MonoTouch (nghi ngờ của tôi) hay nếu Apple chưa bắt đầu thực thi nó. –

+0

@Barry Wark, tôi nghĩ không có cách nào - hiện tại - để Apple biết ứng dụng có được thực hiện với MonoTouch không? Điều này có đúng không (ý tôi là, với kiến ​​thức hiện tại)? –

2

Có một số cuộc tranh luận về việc liệu Apple có cho phép điều này hay không. Trên khuôn mặt của nó, có vẻ như không:

Trong phiên bản mới của iPhone Developer License Program Hiệp phát hành bởi Apple ngày hôm nay (và đó nhà phát triển phải đồng ý trước khi tải các phiên bản beta 4.0 SDK), phần 3.3.1 bây giờ đọc:

3.3.1 - ứng dụng chỉ có thể sử dụng các API tài liệu theo cách theo quy định của Apple và không được sử dụng hoặc gọi bất kỳ API tư nhân. Ứng dụng phải được ban đầu được viết trong Objective-C, C, C++, hoặc JavaScript như thực hiện bởi các cơ iPhone OS WebKit, và chỉ mã viết bằng C, C++ và Objective-C có thể biên dịch và liên kết trực tiếp chống lại các API được ghi trong tài liệu (ví dụ: Các ứng dụng liên kết tới API được tài liệu qua một bản dịch trung gian hoặc lớp hoặc công cụ tương thích bị cấm ).

Từ monotouch forums

+1

Tôi đồng ý. Cho đến khi Apple làm rõ lập trường của họ trên MonoTouch, tôi sẽ xem xét nó sử dụng một nguy cơ nghiêm trọng cho một dự án thương mại. –

10

Dưới đây là câu trả lời một nhà phát triển của MonoTouch chứ không phải là một số công việc đoán từ những người lướt đọc blog.

Bạn đã mua giấy phép Monotouch chưa? Nếu không thì rõ ràng khách quan-C sẽ được ưa thích hơn. Nếu bạn đã mua một giấy phép sau đó nó làm cho tinh thần để phát triển các ứng dụng trong MonoTouch vì:

  • Tên miền và logic kinh doanh có thể dễ dàng được chuyển cho một 7 ứng dụng Windows Mobile vào cuối năm nay
  • Quy định này cũng là trường hợp cho Monodroid sắp ra mắt và API có thể dễ dàng được chuyển sang Java.
  • kiểm soát, xem và toàn bộ hệ thống MonoTouch thanh static void main có thể rất dễ dàng chuyển đổi sang mục tiêu-C. Các tên đều giống nhau nhưng trong trường hợp Pascal.

Theo như ứng dụng được chấp nhận - cho đến nay Apple đã cho phép ứng dụng Monotouch thông qua. Tôi không nói rằng họ sẽ không đột nhiên nói "KHÔNG! ROUNG S SH SỬ DỤNG MỤC TIÊU-C" nhưng đối với họ cấm một khách hàng SO iPhone trên một trang web hồ sơ cá nhân cao như Stackoverflow sẽ là xấu PR.

Apple sử dụng các ứng dụng trong bản trình diễn phá vỡ SDK của riêng mình (Cách nhấn Tap là một) và 1 trong 10 trong số các trò chơi bán chạy nhất trên Appstore sử dụng phần sức khỏe không có mục tiêu-C.

Monotouch là ánh xạ trực tiếp tới Cocoa và UIKit. Bạn cần có một mac để sử dụng trình biên dịch và IDE. Theo như tôi biết Flash không có hạn chế như vậy và giao diện người dùng của nó là rất ít nghiêm ngặt về buộc các "widget" phổ biến thiết lập như UINavigationController, UITabViewController, UIAlertView và như vậy.

+0

Để được an toàn, tôi sẽ sử dụng Obj-C sau đó bạn không có nguy cơ lãng phí thời gian của bạn. –

+1

Nếu bị từ chối, phần giao diện người dùng chắc chắn sẽ lãng phí thời gian. Nhưng các bit để truy vấn có thể được sử dụng sau đó cho Winmo và Android –

6

Dưới đây là quan điểm của tôi: nếu bạn đã hoàn toàn không bao giờ nhìn thấy mã obj-C trong cuộc sống của bạn, nó sẽ mất một chút thời gian để làm quen với nó. Đặt nó cùng với thực tế là SDK là hoàn toàn khác nhau và bạn sẽ phải học tất cả các phương pháp mới, và nó có thể sẽ mất ít nhất một vài tháng để bạn trở thành một nhà phát triển obj-c trung bình nếu bạn học tập chăm chỉ .

Thay vào đó, sử dụng MonoTouch và học hỏi toàn bộ SDK sử dụng C#. Trong một vài tuần, bạn sẽ cảm thấy như đang ở nhà với tất cả các lớp, Trình tạo giao diện, v.v. Bạn sẽ có thể phát triển ứng dụng theo cùng cách với Obj-C, nhưng trong C#. Phiên bản demo cho phép bạn sử dụng mọi thứ, miễn phí.

THÌ bạn quyết định phải làm gì. Tùy thuộc vào toàn bộ vấn đề với Apple, bạn có thể quyết định tiếp tục sử dụng MonoTouch, hoặc bạn có thể quyết định học Obj-C, và về cơ bản sử dụng tất cả kiến ​​thức bạn đã đạt được về SDK. .

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