2013-08-07 27 views
8

Tôi đang phát triển một ứng dụng iPhone trong Xcode 4.6.2 chỉ có một mục tiêu và tôi đã nhận thấy rằng một số tệp quan trọng không phải là thành viên của mục tiêu của tôi. Không có tệp tiêu đề tùy chỉnh nào của tôi là một phần của thành viên đích, cũng không phải là Info.plist, tiêu đề Tiền tố của tôi hoặc sản phẩm "MyApp.app".Xcode: Tệp nào cần phải là thành viên của mục tiêu của tôi? (Mục tiêu thành viên)

Cách tôi hiểu mục tiêu, những tệp này chắc chắn cần phải là thành viên của mục tiêu.

Câu hỏi của tôi là: tại sao những thành viên này không phải là thành viên của mục tiêu của tôi?

Sau khi tìm kiếm xung quanh trên SO, các câu hỏi tương tự đã mang lại một số thông tin chi tiết, nhưng không phải là câu trả lời hoàn chỉnh cho câu hỏi đó. Thông tin chi tiết tôi đã thu thập là:

  1. Tệp tiêu đề không phải là thành viên của mục tiêu vì chúng được liên kết trong giai đoạn xây dựng "Tiêu đề bản sao".

    • này nghe có vẻ hợp lý, nhưng tôi không có một bản sao Headers Xây dựng Giai đoạn
  2. Info.plist và Prefix.pch không thành viên của mục tiêu vì Info.plist được liên kết trong "copy Bundle Tài" Xây dựng giai đoạn, và Info.plist chứa một mục quan trọng/giá trị trỏ đến tiêu đề tiền tố (Prefix.pch)

    • tôi không tích cực rằng đây thực sự là như thế nào công trình

Trả lời

12

Tệp tiêu đề là các tham chiếu tệp nguồn khác để chúng biết giao diện của lớp là gì. Chúng không cần thiết như là một phần của bản thân nhị phân, vì vậy chúng không cần phải được đưa vào sản phẩm cuối cùng.

Info.plist là trường hợp đặc biệt vì nó tự định nghĩa gói ứng dụng, do đó nó được xử lý riêng.

Nói chung, bạn muốn tập tin phải là thành viên của mục tiêu của bạn khi họ:

  • Mẫu là một phần của thực thi (ví dụ như thực hiện (.m) các tập tin hoặc thư viện), hoặc
  • có bao gồm như là tập tin trong gói ứng dụng (ví dụ: hình ảnh).

Bạn không cần tệp là thành viên của mục tiêu nếu chúng chỉ được sử dụng như một phần của quá trình xây dựng và không cần thiết khi chạy. Thông thường, đây là bất kỳ loại tệp tiêu đề nào, bao gồm các tiêu đề được biên dịch trước (.pch).

+0

Điều đó có ý nghĩa rất nhiều. XCode cần tiêu đề, nhưng ứng dụng của tôi thì không. Vậy Info.plist chỉ định nghĩa gói ứng dụng và không thực sự được đóng gói vào nó? –

2

Chỉ .m tập tin và tập tin tài nguyên là một phần của mục tiêu, không .h.

Bạn nói đúng: các tệp Info.plist và tiêu đề đều được tham chiếu trong cài đặt bản dựng (một lần nữa là mục tiêu cụ thể).

3

Chỉ cần sao chép tiêu đề cho mục tiêu khung và chỉ vì chúng là một phần của bản phát hành khung (chúng cho phép người dùng biết cách sử dụng khung công tác). Ứng dụng không cần tiêu đề bởi vì chúng được biên soạn các thực thể độc lập. Các tiêu đề (và tệp pch) được sử dụng trong quá trình biên dịch nhưng không bắt buộc khi chạy.

Thông tin.plist được xử lý khác nhau. Nó thường không thể chỉ được sao chép bởi vì trong dự án nó thường không được gọi là "Info.plist". Nó cũng bắt buộc đối với tệp tồn tại trong ứng dụng nên Xcode không cung cấp cho bạn tùy chọn không bao gồm nó.

+0

Câu trả lời ngắn gọn và ngọt ngào, tự giải thích mọi thứ. – technerd