2012-01-15 42 views
24

Chỉ cần một câu hỏi/ý kiến ​​nhanh về cách bạn sắp xếp thư mục Xcode 4 cho từng ứng dụng iOS bạn tạo.Tổ chức thư mục dự án iOS

Cá nhân, tôi vẫn thêm thư mục có tên/Tài nguyên chứa thư mục con như/Phông chữ,/Hình ảnh,/Biểu tượng, v.v. Tôi sử dụng tùy chọn "Sao chép các mục vào thư mục nhóm đích (nếu cần)". Nếu tôi cần thêm một ressource mới, tôi chỉ cần thêm nó vào đúng thư mục trong finder.app trong thư mục dự án của tôi (ví dụ nếu nó là một hình ảnh, tôi thêm nó vào MyProject/Resources/Images/Foo.png) và sau đó tôi đơn giản đi vào nhóm của tôi "Hình ảnh" trong Xcode và thêm tập tin từ đó.

một khi tôi đã cố gắng để sử dụng "Thư mục tài liệu tham khảo" tùy chọn để giữ Xcode và Finder đồng bộ, nhưng IB đã không thể có được những hình ảnh ...

Ngoài ra, là icon.png và Default.png tại gốc của dự án của bạn? (tức là với tệp .xcodeproj?) Khi bạn sử dụng Xcode 4 (trong thông tin dự án> tóm tắt), họ thêm chúng ở đó ... Tự hỏi nếu bạn giữ chúng ở đó, Nguyên nhân cá nhân tôi luôn thích có tất cả hình ảnh trong thư mục mẫu!

Và còn các tệp photoshop hoặc bất kỳ tệp nào khác liên quan đến dự án của bạn, bạn cũng đặt chúng vào thư mục gốc (lại với tệp .xcodeproj)?

+0

Tôi nghĩ rằng nó hoàn toàn phụ thuộc vào bạn, nơi bạn phải lưu nó, họ không có hướng dẫn hoặc quy tắc cho cấu trúc thư mục. – rishi

+0

Tôi biết rằng không có quy tắc "nghiêm ngặt" về nó, tôi tự hỏi làm thế nào mọi người cấu trúc dự án của họ, đó là nó :) – allaire

+1

bạn có thể tham khảo chủ đề sau của diễn đàn sdk iphone cũng - http://www.iphonedevsdk.com /forum/iphone-sdk-development/6457-xcode-folder-directories.html – rishi

Trả lời

25

Tôi khuyên bạn nên giữ tất cả các tệp .m và .h và .xib trong một thư mục đơn giản vì nó đơn giản hóa chuỗi địa hóa khi bạn chạy ibtool để trích xuất tất cả các tham chiếu NSLocalizedString, và nó cũng giúp việc di chuyển các tệp xung quanh cấu trúc thư mục ảo trong Xcode khi bạn cấu trúc lại dự án của mình.

Giữ thư viện hoặc khung bên thứ ba trong một thư mục riêng biệt để tránh trộn chúng với mã của riêng bạn.

Trong chính Xcode, tôi sắp xếp các tệp lớp này thành các thư mục ảo riêng biệt được gọi là Chế độ xem, Bộ điều khiển, Mô hình và Nibs (và Thư viện cho nội dung của bên thứ 3). Nếu đó là một dự án lớn, tôi chia nó thành các thư mục cho mỗi thành phần và sau đó chia chúng thành các khung nhìn, các bộ điều khiển, vv, nhưng lại chỉ là các thư mục ảo, chứ không phải các thư mục vật lý.

Giữ tài nguyên trong một thư mục vật lý riêng biệt là một ý tưởng hay chỉ để giúp bạn duyệt chúng dễ dàng hơn trên đĩa. Nó có thể có ý nghĩa để chia chúng thành hình ảnh, âm thanh, xml, v.v. Trong Xcode bạn có thể muốn chia nhỏ chúng thành các thư mục con ảo theo thành phần hoặc thể loại (giao diện, nội dung, v.v.) nhưng tôi sẽ không đề xuất làm như vậy trên đĩa nó làm cho nó khó khăn hơn để cấu trúc lại cấu trúc thư mục của bạn khi dự án của bạn phát triển.

Bạn nên giữ tất cả hình ảnh trong cùng một thư mục vì nó tránh bạn vô tình cho hai hình ảnh cùng tên. Xcode sẽ không cảnh báo bạn nếu bạn nhập hai hình ảnh có cùng tên từ các địa điểm khác nhau, nhưng khi xây dựng ứng dụng bạn sẽ chỉ kết thúc bằng một hoặc một hình ảnh khác, được chọn ngẫu nhiên.

Bạn không phải giữ Default.png và Icon.png trong thư mục gốc (hoặc thậm chí gọi chúng là Default.png và Icon.png) nhưng đôi khi Xcode bị nhầm lẫn nếu các tệp chuẩn không nằm ở vị trí mong đợi. Và bất cứ điều gì bạn làm, không cố gắng sử dụng các tài liệu tham khảo thư mục màu xanh khi bạn nhập hình ảnh nếu không bạn không thể truy cập chúng từ bên trong mã của bạn với imageNamed: hoặc trong Interface Builder. Sử dụng tham chiếu thư mục ảo màu vàng để thay thế. Về cơ bản, các thư mục màu xanh được sao chép vào gói ứng dụng dưới dạng thư mục thực khi ứng dụng được tạo, trong khi các thư mục màu vàng bị bỏ qua và nội dung của chúng đi trực tiếp vào thư mục gốc của gói ứng dụng. Để truy cập nội dung trong các thư mục màu xanh, bạn cần phải bao gồm tên thư mục màu xanh trong đường dẫn khi bạn tải chúng, ví dụ:

NSString *path = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"png" inDirectory:@"nameOfBlueFolderInXcode"]; 
UIImage *image = [UIImage imageWithContentsOfFile:path]; 
+1

Tôi đồng ý ngoại trừ "giữ tất cả các tệp .m và .h và .xib của bạn trong một thư mục duy nhất ". Điều đó sẽ khiến tôi không có cấu trúc trong kho svn của tôi! Nhưng để mỗi riêng của mình. – chown

+0

Vâng, nếu bạn sử dụng svn bạn biết làm thế nào đau đớn là di chuyển các tập tin giữa các thư mục trong một dự án được lưu trữ trong svn. Số lượng các nỗ lực liên quan đến việc di chuyển một lớp con UIButton tùy chỉnh từ, nói các lớp/somecomponent/views/thành lớp/chia sẻ/khung nhìn như một phần của quá trình tái cấu trúc mà không vi phạm liên kết cục bộ và kho svn sẽ khiến tôi rời khỏi cấu trúc lại và bất kỳ thứ gì làm tốt công việc khó khăn là một ý tưởng tồi. –

+0

Ngoài ra, lưu ý quan điểm của tôi về việc tạo tệp localizable.strings của bạn bằng cách sử dụng ibtool. ibtool là một công cụ dòng lệnh có một đường dẫn thư mục và tạo ra một tệp chuỗi đơn từ tất cả các lớp bên trong. Nó không tìm kiếm các thư mục con, vì vậy nếu các lớp của bạn không phải tất cả trong một thư mục, nó sẽ làm cho việc bản địa hoá trở nên khó khăn hơn rất nhiều. –

9

Gần đây tôi đã suy nghĩ về điều này rất nhiều; đây là cấu trúc tôi quyết định đi cùng:

ProjectName 
ProjectName/Assets 
ProjectName/Assets/Images 
ProjectName/Frameworks 
ProjectName/Logic 
ProjectName/Logic/Models 
ProjectName/Presentation 
ProjectName/Presentation/ViewControllers 
ProjectName/Presentation/Views 

Tôi nghĩ điều này mang lại cơ cấu tốt cho sự tăng trưởng và cung cấp một căn nhà hợp lý cho hầu hết mọi thứ. Tất nhiên, thêm các thư mục con bổ sung (ví dụ: Assets/Fonts) khi cần. Đối với lý do đầy đủ của tôi cho cấu trúc, hãy kiểm tra this blog post.

Tôi giữ những thứ như Icon.pngDefault.png ở gốc của dự án vì Xcode có vẻ khó hiểu về nó, nhưng những thứ khác được sắp xếp gọn gàng. Tôi giữ các tệp tương ứng .m, .h.xib cùng nhau, nhưng tôi chia các bộ điều khiển chế độ xem một cách hợp lý thành các thư mục con theo tính năng (ví dụ: Initial, Settings).

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