2012-07-23 12 views
34

Tôi không hiểu việc sử dụng không gian làm việc Xcode để tổ chức các dự án có phụ thuộc vào nhau. Ví dụ: tôi thấy rất nhiều nhà phát triển tạo cấu trúc không gian làm việc giống như sau:Không gian làm việc Xcode và các dự án lồng nhau

 
Workspace 
|-- App 
|-- A Common Library 
|-- Another Common Library 

Điều này mang lại lợi ích gì? Nếu bất cứ ai mở dự án "Ứng dụng" trực tiếp thì họ sẽ không thể thực sự xây dựng ứng dụng? Họ sẽ phải nhận ra rằng một không gian làm việc tồn tại với các phụ thuộc cần thiết.

Dường như với tôi như là cách tiếp cận tốt hơn là sử dụng các dự án lồng nhau như thế này:

 
App 
|-- Libraries 
| |-- A Common Library 
| |-- Another Common Library 

Sau đó, không có dự án tồn tại mà không thể được xây dựng. Nó cũng có vẻ phù hợp hơn với ý tưởng của Git về submodules.

Cách sử dụng duy nhất tôi thấy cho không gian làm việc là nhóm các dự án chung mà không phụ thuộc vào nhau. Tôi muốn nghe suy nghĩ của người khác về điều này bởi vì tôi có thể thiếu một cái gì đó.

+22

Woa!Một câu hỏi được gắn thẻ Xcode thực sự là về Xcode! :) – Almo

+1

@Almo: Nó xảy ra vài ngày một lần. Họ thường có vấn đề ngược lại, mặc dù: gắn thẻ [objc] khi nó không áp dụng. :) –

+1

Một số lý do để sử dụng không gian làm việc được đề cập ở đây: https://developer.apple.com/library/ios/featuredarticles/XcodeConcepts/Concept-Workspace.html – pi3

Trả lời

17

Tôi sử dụng không gian làm việc khi tôi muốn kết hợp các dự án trong khi vẫn duy trì tính độc lập của dự án.

Ví dụ nơi tôi sử dụng không gian làm việc là một loạt các dự án hướng dẫn phát triển từ rất đơn giản đến phức tạp hơn. Mỗi dự án có thể hoạt động như một dự án độc lập, nhưng nhóm chúng lại với nhau trong một không gian làm việc sẽ giúp tổ chức của tôi về dự án tổng thể.

Trong trường hợp khác, tôi có ứng dụng được phát triển cho khách hàng. Ứng dụng hoạt động như một ứng dụng độc lập và một mô-đun trong dự án tổng thể. Dự án độc lập có thể xây dựng ứng dụng độc lập. Ứng dụng kia sử dụng không gian làm việc bao gồm hai dự án. Phiên bản mô-đun của ứng dụng được tạo từ một sơ đồ đặc biệt và ứng dụng kết hợp này không xây dựng mà không sử dụng không gian làm việc.

Một bước ngoặt với hai trường hợp trên là nơi thư mục xây dựng được lưu trữ. Tôi phải thay đổi tùy chọn Xcode để đưa sản phẩm xây dựng vào các thư mục duy nhất cho nhóm các dự án hướng dẫn, sử dụng một thư mục xây dựng chung cho mô-đun trong thiết lập ứng dụng khác.

Trong các trường hợp khác, tôi có nhiều dự án với các dự án được nhúng. Trong những tình huống này, các dự án thư viện ổn định. Tôi không cố gắng phát triển thêm các dự án thư viện để chúng chỉ là một nguồn lực khác cho dự án. Tôi thấy dễ dàng hơn khi làm việc nơi tổ chức hệ thống tệp của tôi về tài nguyên dự án phần nào phản ánh việc tổ chức dự án Xcode của tôi. Vì vậy, các dự án thư viện này được sao chép vào hệ thống phân cấp tệp của dự án chính. Nó sẽ có ý nghĩa để sử dụng không gian làm việc nếu tôi đã phát triển các thư viện và sử dụng chúng trong nhiều dự án. Đối với expedience tôi thường xuyên không bận tâm.

Đôi khi tôi thậm chí kết hợp không gian làm việc với các dự án có chứa các dự án được nhúng.

Vì vậy, ý kiến ​​của tôi là cả hai công cụ tổ chức, dự án nhúng và không gian làm việc đều có thành tích và vấn đề của họ. Tôi chọn để sử dụng một hoặc khác (hoặc một sự kết hợp) tùy thuộc vào hoàn cảnh cụ thể.

+0

Cảm ơn bạn đã có thông tin chi tiết. Tôi đồng ý với hầu hết các điểm của bạn, tuy nhiên ngay cả khi thư viện là thông lượng tôi không thấy lợi ích của việc sử dụng một không gian làm việc. Nếu thư viện của bạn được lưu trữ trong kho Git, bạn có thể thêm nó vào các dự án dưới dạng mô-đun con và sau đó cập nhật mô-đun con khi cần. – mark

+0

Có, các mô đun con git là một phương pháp thay thế (và có thể tốt hơn) về quản lý phát triển thư viện. Submodules là một tính năng git nâng cao, mà nhiều nhà phát triển iOS không thể sử dụng vì nhiều lý do khác nhau vì thiếu kiến ​​thức để được yêu cầu sử dụng các hệ thống kiểm soát phiên bản khác. Trong những tình huống như vậy, không gian làm việc có thể là một lựa chọn tốt hơn so với các dự án nhúng. –

+0

@ Mr.Berna - xin lỗi nhưng sử dụng git với xcode là một nỗi đau trong ... bạn không thể kiểm soát bất kỳ phiên bản/nhánh/ngã ba nào bạn đang sử dụng trong mọi dự án trừ khi bạn đi theo thư mục bằng tay bằng cách sử dụng thiết bị đầu cuối và ghi chú theo cách thủ công. – SpaceDog

1

Chúng tôi đã thêm các dự án lồng nhau vào Khung chính của dự án, vì vậy chúng tôi có thể "đưa chúng" vào sản phẩm .framework.

Main 
|-- Main 
|-- MainTests 
|-- Frameworks 
| |-- CommonLibrary.xcodeproj 
| |-- AnotherCommonLibrary.xcodeproj 
| |-- UIKit.framework 
| |-- Foundation.framework 
| |-- CoreFoundation.framework 
|-- Products 

Xem this Great Tutorial by Jeff Verkoeyen để thêm Universal Framework cho dự án. Nó không phải dễ dàng, lúc đầu, nhưng tiếp tục làm việc trên nó và bạn sẽ nhận được hang của nó.

+0

Cấu trúc này có thể bằng cách có CocoaPods trên mỗi đơn .xcodeproj không? – user023