2008-11-16 24 views
28

Tôi muốn phát triển một chút trong OSX và iPhone. Tôi đã là một nhà phát triển .Net/C# trong nhiều năm. Tôi đã tự hỏi liệu có ai có kinh nghiệm trong cả hai nền tảng có thể cho tôi biết cách họ so sánh và tương phản. Tôi muốn có được một ý tưởng về những gì sắp xếp của đường cong học tập tôi đã có trước tôi..Net guy cần một số thông tin về Cocoa

Cảm ơn,

Geoff

Trả lời

22

Đầu tiên là xấu:
Tôi đã làm một số phát triển ca cao trong XCode. Điều đầu tiên bạn sẽ nhận thấy là IDE (XCode) không phải là bất cứ nơi nào trực quan, hoặc tốt đẹp nói chung, như Visual Studio. Tôi thực sự nhớ intellisense khi làm việc trong XCode. Các nhà phát triển Apple có thể sẽ bỏ phiếu cho tôi về tuyên bố đó. Nhưng đến từ một môi trường .Net, đó là những gì tôi thực sự bỏ lỡ. Vì vậy, đừng đặt kỳ vọng của bạn quá cao và bạn sẽ không quá thất vọng. Tôi không cố gắng chạy XCode xuống, nó chỉ là không tốt đẹp như Visual Studio.

Bây giờ tốt:
Kiến trúc chung của một dự án ca cao là rất đẹp. Tôi muốn .Net Winforms và WPF sử dụng MVC ra khỏi hộp như dự án Cocoa làm. Miễn là bạn theo mẫu MVC, bạn nên làm OK với dự án của bạn. Tất cả mọi thứ tôi đã làm là trong mục tiêu C. Bạn có thể chọn một cuốn sách về điều đó. Tôi đã mua Cocoa Programming for Mac OS X và nghĩ rằng nó khá tốt. Nếu bạn có bất kỳ C trong nền của bạn, nó sẽ trông rất quen thuộc. Từ một triển vọng C#, ký hiệu chấm cho các lớp được thay thế bằng một ký hiệu gửi tin nhắn tương tự như Tcl.

Tải iTunes xuống máy của bạn và tải xuống video dev dành cho iPhone dưới iTunes U. Bạn cũng sẽ cần phải đăng ký chương trình nhà phát triển tại Apple và tải xuống các bit bổ sung cho XCode cho iPhone.

Hy vọng điều đó sẽ hữu ích. Tôi không phải là nhà phát triển ca cao chuyên nghiệp.

+0

Xcode có tính năng tự động hoàn thành, chỉ cần bật tính năng này trong các thuộc tính nếu nó không xuất hiện tại thời điểm này. Xcode khác với VS nhưng một khi tôi đã học được nó thì tôi thấy nó rất tốt ... và nó hoàn toàn miễn phí. –

+2

Tự động điền không giữ một ngọn nến để intellisense, và không hoạt động tốt cho tôi. Không cố gắng để bắt đầu một cuộc chiến tôn giáo - chỉ cần cố gắng để cung cấp cho một quan điểm phát triển Net hợp lệ của di chuyển trong đất ca cao. –

+1

Tôi đã là một nhà phát triển .NET trong nhiều năm và tôi đã đến để thích BETTER tự động hoàn chỉnh hơn Intellisence. Chủ yếu là vì cách nó điền vào các tham số và bạn có thể sử dụng CTRL +/để quét qua chúng. – Lounges

3

Điều quan trọng bạn phải luôn nhắc nhở chính mình, đó là ca cao chỉ không hoạt động giống như WinForms. Bạn sẽ không tìm thấy một "Event Handler" ở bất cứ nơi nào, mặc dù bạn sẽ tìm kiếm một! Không phải là WinForms là xấu, nhưng Cocoa chỉ là một mô hình khác nhau.

14

Tôi đã phát triển chuyên nghiệp với C# và .NET kể từ phiên bản beta 1. IDE XCode là một động vật hoàn toàn khác với Visual Studio. Ban đầu bạn sẽ cảm thấy rất bối rối và mất mát. Tôi vẫn chưa hoàn toàn satisifed với giao diện người dùng (thần thân yêu cho tôi một cửa sổ giải pháp quản lý và giết màn hình này tách crap), tuy nhiên trong thời gian không bạn sẽ chỉ là hiệu quả và nhanh chóng như trong Studio. Tài liệu có thể so sánh được mặc dù tôi thích bố cục trong MSDN.

Đối với Cocoa, thường dễ dàng hơn để làm việc với bộ công cụ GUI hơn .NET. Như đã nói ở trên một suy nghĩ khác của nó, tuy nhiên một khi bạn quấn đầu của bạn xung quanh nó, bạn sẽ đào nó.

Trong khi không liên quan đến iPhone, có nhiều điểm tương đồng giữa phát triển Mac và iPhone. Bạn sẽ làm cho mình một ưu tiên để lấy phiên bản mới nhất của cuốn sách Aaron Hillegass OSX. Của nó khá nhiều các de-facto hướng dẫn để viết bất kỳ phần mềm Cocoa.

Tóm lại ... bạn sẽ RẤT mất đi và bối rối ban đầu, nhưng khó khăn nó ra giá trị của nó.

4

Tôi khá có kinh nghiệm ở cả hai, mặc dù tôi chưa thực hiện nhiều mã C# trong một năm.Tôi đã đi từ Obj-C đến C#, và tôi không có quá nhiều rắc rối. Mã Obj-C dường như với tôi hơi chính thức và ít cứng nhắc hơn C#; ví dụ không có mảng được đánh máy và bạn không phải lo lắng về việc kiểm tra rõ ràng nếu một đối tượng là nil/null trước khi gọi một phương thức trên đó. Nói chung đây là một điều tốt, vì bạn có thể viết nhỏ gọn hơn, mã thanh lịch (IMO). Đồng thời không giống như C#, bạn cần phải biết các khái niệm cơ bản về lập trình C để làm việc với Obj-C, vì vậy bạn có thể muốn tìm ra những thứ như con trỏ nếu bạn bị gỉ.

Tôi nghĩ rằng đối với các API, bạn sẽ thấy rằng Cocoa phù hợp hơn với các ứng dụng dành cho máy tính để bàn, chứ không phải là doanh nghiệp như .NET. Ví dụ, nơi .NET có ADO.NET, kiểm soát ReportViewer, trong khi Cocoa có Core Data, PDFKit và SearchKit.

7

Tôi vừa mới đánh dấu phần này là mục ưa thích, vì tôi hy vọng nhiều hơn. NET + Cocoa guys kêu vang. Tôi chỉ mới bắt đầu (một lần nữa) với Cocoa, và cho đến nay yêu nó. (Nó giúp mà tôi đang làm việc trên 10.5, cho phép thu gom rác thải như một tùy chọn.)

Một số khác biệt lớn nhất mà tôi đã nhận thấy vậy, đến nay:

  1. Vâng, XCode là rất khác nhau hơn Visual Studio. Những người khác có thể bắt chước bản chất "chia màn hình", nhưng tôi thấy nó khá trực quan khi tôi quấn bộ não của mình xung quanh nó. Có lẽ lời khuyên lớn nhất mà tôi có thể cung cấp ở đây là tùy chỉnh thanh công cụ, thêm nút "Editor" và sử dụng nút đã nói một cách tôn giáo để chỉnh sửa mã.
  2. Cú pháp nhắn tin cảm thấy không quen thuộc, nhưng tôi nghi ngờ đó là vì tôi không đến từ một nền Smalltalk. (Tôi nghe - mặc dù tôi đã không xác nhận điều này - rằng các khái niệm rất giống nhau.) Rõ ràng, như 10.5, ký hiệu chấm và khái niệm các thuộc tính đã được thêm vào, nhưng Hillegass khuyến cáo chống lại chúng. Tôi nói làm bất cứ điều gì cảm thấy đúng. (Tôi chưa nhận được điều đó trong cuốn sách, bản thân mình ...)
  3. Ngôn ngữ là, cho tất cả các ý định và mục đích, không được nhập. Các ưu điểm ở đây là bạn có thể thực sự sửa đổi các lớp khung công tác cho phù hợp với nhu cầu của bạn và các thông điệp sẽ được giải quyết trong thời gian chạy, cho phép bạn tự do hơn rất nhiều. Các khuyết điểm là bạn có thể không tìm thấy lỗi cho đến khi chạy, và nhiều lỗi trong số này không hoạt động theo cách mà các ngoại lệ .NET làm - nghĩa là, nhiều lỗi trong số chúng không gây ra một ứng dụng hoàn chỉnh tạm dừng khi bạn không bẫy chúng. (Phải thừa nhận rằng, cũng có từ khóa @throw; Tôi cũng chưa nhận được. :)) Một khái niệm khác là khái niệm của Obj-C về null (nil) cũng có thể nhận tin nhắn - không có khái niệm NullReferenceException. Cả hai thứ này đều có thể gây ra các cơn đau đầu.
  4. Trình tạo giao diện là một con thú hoàn toàn mới, so với các nhà thiết kế WinForms/WPF/ASP.NET. Khái niệm lưu trữ toàn bộ giao diện người dùng và không phải là mã, là một trong những khái niệm khó khăn hơn đối với nhiều người trong chúng ta. Không có gì sai với nó, nhưng chúng ta cần phải có được đầu của chúng tôi xung quanh nó.
  5. Bộ sưu tập rác. Tính đến 10.5, Cocoa và Objective-C đều hỗ trợ tính tham chiếu (retain/release/autorelease) quản lý bộ nhớ và thu gom rác tự động. Chỉ mới bắt đầu làm việc, tôi không thể chi tiết quá nhiều can đảm, nhưng trong khi GC dễ sử dụng hơn, bạn sẽ phải chỉ định nó theo cách thủ công - và ứng dụng của bạn bây giờ sẽ yêu cầu 10.5 hoặc cao hơn để chạy. Ngoài ra, ngay cả với GC, cách tốt nhất là đặt thủ công con trỏ của bạn thành nil khi bạn hoàn tất với chúng, để gợi ý cho GC rằng chúng có thể sẵn sàng để thu thập. Không hoàn toàn minh bạch như .NET. (Một lần nữa, không tệ, chỉ khác nhau. Những điều cần biết!)

Tôi là không có nghĩa là một chuyên gia. Tôi thực sự chỉ mới bắt đầu con đường này (một lần nữa). Mặc dù vậy, tôi yêu nó và tôi nghi ngờ rằng nếu một người phát triển Microsoft cứng rắn như tôi có thể đào bới nó, những người khác cũng có thể.

Cuối cùng, tôi đã phát hiện ra blog .NET Addict cách đây vài tháng. Tác giả làm cả .NET và Cocoa, và có một số bài viết thảo luận về sự khác biệt. Rat khuyen khich.

10

Nếu bạn có một số nền tảng Cocoa/Objective-C, sau đó bạn có thể nhảy vào phát triển iPhone với sự giúp đỡ của "Bắt đầu phát triển iPhone" bởi Dave Mark và Jeff LaMarche:

http://www.amazon.com/dp/1430216263/

Nó rất dễ dàng theo dõi, nhưng các tác giả giả định một số kiến ​​thức trước về Objective-C (như đã nêu ở bìa sau), vì vậy tôi khuyên bạn nên bắt đầu với năm hoặc sáu chương đầu tiên của "Lập trình Cocoa cho Mac OS X" của Aaron Hillegass, như đã lưu ý trước đây.

http://www.amazon.com/dp/0321503619/

Aaron đã được sử dụng và giảng dạy Objective-C và các khuôn khổ hiện nay gắn liền với Cocoa kể từ ngày ông ở NeXT, và nó cho thấy. Vật liệu thực sự, rất tốt.

Trong khi phần lớn các kỹ thuật phát triển áp dụng như nhau cho Mac và iPhone, một số kỹ thuật chỉ áp dụng cho Mac (ví dụ: thu thập rác, ràng buộc, Dữ liệu chính) và một số chỉ áp dụng cho iPhone (ví dụ: nhiều mục tiêu cho một hành động).

Nếu bạn muốn phát triển iPhone thực sự nhanh chóng và bạn sẵn sàng đầu tư một số tiền, nhóm của Aaron cũng có thể dạy cho bạn mọi thứ bạn cần biết trong một tuần, thông qua các lớp học tại Big Nerd Ranch. (Lớp iPhone luôn lấp đầy một cách nhanh chóng, nhưng nếu bạn xảy ra để được ở thung lũng Silicon, vẫn là phòng "iPhone cho hành khách" vào tháng Giêng.)

http://www.bignerdranch.com/

(Nhấp vào lớp tab cho lịch trình của những gì và khi nào, bao gồm Ruby, Android và nhiều thứ khác.)

Mặc dù cá nhân tôi thích các tùy chọn ở trên, tất nhiên cũng có một số tùy chọn trực tuyến miễn phí. Scott Stevenson đã đưa một số lượng lớn công sức vào hướng dẫn Cocoa/Objective-C:

http://www.cocoadevcentral.com/

Và Stanford đã cung cấp các lớp học cả về phát triển Mac và phát triển iPhone, giảng dạy bởi các kỹ sư của Apple, và đã đăng vật liệu lớp học trực tuyến:

Mac: http://www.stanford.edu/class/cs193e/
iPhone: http://www.stanford.edu/class/cs193p/

Cuối cùng, dường như phát triển những người đến với Mac/iPhone dev elopment với một nền Windows cố gắng tránh Interface Builder (IB) và thay vào đó xây dựng giao diện người dùng trong mã. Tôi hiểu tại sao - IB không trình bày mọi thứ đang diễn ra trong một danh sách mã hay - nhưng tôi khuyên bạn nên chống lại chiến lược này.

Phát triển Mac/iPhone là tất cả về việc giảm thiểu mã. Bạn phải viết ít mã hơn, bạn càng ít phải duy trì và ít cơ hội hơn cho một sai lầm. IB rất tuyệt vời để giảm thiểu mã cần thiết cho giao diện người dùng.

Nền C/C# của bạn sẽ phục vụ bạn tốt.Bạn sẽ thấy rằng Objective-C có vẻ khá kỳ lạ lúc đầu, nhưng tôi nghi ngờ bạn sẽ đến để đánh giá cao điểm mạnh của nó, và bạn sẽ nhặt nó lên rất nhanh chóng. Không giống như C++, nó thực sự khá đơn giản.

+0

Đây có phải là phản hồi được đặt trước hay bạn đã viết nó cho bài đăng này? Bạn đang làm việc rất chăm chỉ cho các điểm upvote của bạn :-) –

+0

Cuốn sách Aaron Hillegass được đề cập là rất tốt. Tôi chỉ học Cocoa bản thân mình và nó đã giúp rất nhiều. Tôi cũng đã đọc một vài cuốn sách sắp tới của iPhone (trên giá sách Safari) và trong khi chúng tốt ở chỗ chúng là iPhone cụ thể, chúng không chứa đựng nhiều chi tiết. – U62

+0

+1 cho câu trả lời tuyệt vời! – gyurisc

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