2010-04-05 28 views
11

Tôi đang gặp một số khó khăn khi tạo gói cho ứng dụng của mình và đặt các tệp trong gói.Cách tạo gói của riêng tôi trong Xcode, cho ứng dụng iPhone

Ví dụ: Facebook đã phát triển một gói dành cho các ứng dụng iPhone bằng cách sử dụng khung của họ. Trong cùng một cách, tôi cũng muốn tạo một gói có thể được tái sử dụng cho nhiều ứng dụng.

Câu hỏi của tôi là:

  • tôi bước những gì nên làm theo để tạo ra một bó cho bất kỳ loại ứng dụng?
  • cần phải thận trọng khi tạo nhóm?

Trả lời

11

Trước hết, vì câu hỏi của bạn được gắn thẻ iPhone, bạn chỉ có thể bao gồm mã trong các gói của mình trên iPhone. Vì vậy, về cơ bản bạn chỉ có thể sử dụng các gói để đóng gói hình ảnh và tệp âm thanh và các dữ liệu tĩnh khác.

Khi bạn tạo dự án mới trong XCode, có một tùy chọn để thực hiện nhắm mục tiêu một gói (trong Thư viện &), nhưng gói nội dung chỉ là một thư mục có hậu tố .bundle. Tôi tạo ra mỏ với kịch bản này chút:

#!/bin/bash 
echo "Building assets bundle." 
if [ -d ./MyAssets.bundle ]; then 
    rm ./MyAssets.bundle/* 
else 
    mkdir ./MyAssets.bundle 
fi 
find ./assets -type f -print0 | xargs -0 -J% cp % ./MyAssets.bundle 

(Tôi không có bash của hacker, vì vậy đây có lẽ có thể được cải thiện trong vô số cách Gợi ý hoan nghênh.!)

này có một hệ thống phân cấp thư mục và flattens nó (Tôi hủy phân cấp) thành một thư mục có tên MyAssets.bundle. Tôi kích hoạt tập lệnh này từ một giai đoạn xây dựng riêng biệt khi trong các dự án nhập gói, để các thay đổi được tự động theo dõi.

Nếu bạn muốn tìm hiểu cách tạo gói khung, điều này phức tạp hơn một chút (bạn phải tuân thủ một số quy ước nhất định và bao gồm thông tin theo yêu cầu), nhưng đối với gói iPhone, đây là tất cả những gì bạn cần biết và làm.

+0

Có thể tải file xib từ gói này, bởi vì tôi đã không tìm thấy một cách để làm điều đó ? – vakio

+0

Bạn có thể sử dụng gói thích hợp trong cả hai [[NSBundle mainBundle] loadNibNamed: @ "MyViewController" chủ sở hữu: tự tùy chọn: nil] và [aViewController initWithNibName: @ "MyViewController" bó: nil] (nil chỉ có nghĩa là gói chính) – Felixyz

+0

Nhưng bạn không thể có một gói bên ngoài, phải không? Giống như NSBundle * bundle = someFunctionToLoadExternalBundle(); [bundle loadNibNamed: @ "name" owner: self options: nil]; Tôi đã googled và chỉ thấy rằng nó không thể được thực hiện. Chỉ cần kiểm tra nếu bạn phát hiện ra một cách kỳ diệu để làm điều đó hoặc một cái gì đó, nhưng tôi biết nó có lẽ sẽ không bao giờ xảy ra. – vakio

8

Bạn có thể làm điều này quá:

Tạo một thư mục trong công cụ tìm thêm tệp vào nó, đổi tên nó để bundlename.bundle

kéo vào Xcode - thành công!

để truy cập, sử dụng hình thức PathToMainBundle + "/ bundlename.bundle"

Nguồn: https://stackoverflow.com/a/5277452/736384

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