Câu trả lời:
Tôi nghi ngờ vì các mô-đun, mà loại bỏ sự cần thiết cho #import <Cocoa/Cocoa.h>
.
Về vị trí đặt mã mà bạn sẽ đặt trong tiêu đề tiền tố, không có mã nào bạn nên đặt trong tiêu đề tiền tố. Đặt nhập khẩu của bạn vào các tập tin cần chúng. Đặt định nghĩa của bạn vào các tập tin riêng của họ. Đặt macro của bạn ... không nơi nào. Dừng viết macro trừ khi không có cách nào khác (chẳng hạn như khi bạn cần __FILE__
). Nếu bạn cần macro, hãy đặt chúng trong một tiêu đề và bao gồm nó.
Tiêu đề tiền tố là cần thiết cho những thứ rất lớn và được sử dụng bởi hầu hết mọi thứ trong toàn hệ thống (như Foundation.h
). Nếu bạn có một cái gì đó rất lớn và có mặt khắp nơi, bạn nên suy nghĩ lại về kiến trúc của mình. Các tiêu đề tiền tố làm cho việc tái sử dụng mã trở nên khó khăn và đưa ra các vấn đề xây dựng tinh tế nếu bất kỳ tệp nào được liệt kê có thể thay đổi. Tránh chúng cho đến khi bạn gặp vấn đề về thời gian xây dựng nghiêm trọng mà bạn có thể chứng minh được cải thiện đáng kể với tiêu đề tiền tố.
Trong trường hợp đó, bạn có thể tạo một cái và chuyển nó thành tiếng kêu, nhưng cực kỳ hiếm khi đó là một ý tưởng hay.
EDIT: Đối với câu hỏi cụ thể của bạn về HUD bạn sử dụng trong tất cả các bộ điều khiển xem của mình, vâng, bạn hoàn toàn nên nhập nó vào mọi bộ điều khiển xem thực sự sử dụng nó. Điều này làm cho các phụ thuộc rõ ràng. Khi bạn sử dụng lại bộ điều khiển xem của mình trong một dự án mới (điều này rất phổ biến nếu bạn xây dựng bộ điều khiển tốt), bạn sẽ biết ngay những gì nó yêu cầu. Điều này đặc biệt quan trọng đối với các danh mục, có thể khiến mã rất khó sử dụng lại nếu chúng ẩn.
Tệp PCH không có ở đó để loại bỏ các phụ thuộc danh sách. Bạn vẫn nên nhập UIKit.h
hoặc Foundation.h
khi cần, như các mẫu Xcode đã làm. Lý do cho PCH là để cải thiện thời gian xây dựng khi xử lý các tiêu đề thực sự lớn (như trong UIKit).
TWAPIManager.m
, ví dụ, sang một dự án khác, bạn sẽ gặp các lỗi TWALog()
không được xác định, không có gợi ý về nơi tìm thấy nó. Tôi đã gặp chính xác vấn đề đó trên một số dự án lớn đang cố gắng chia sẻ mã. Tạo TWAPILog.h
và nhập nó giải quyết điều này với chi phí dev tầm thường.
Nếu không có câu hỏi có phù hợp hay không, bạn có thể thêm tệp PCH theo cách thủ công:
Thêm tệp PCH mới vào dự án: Tệp mới> Khác> tệp PCH .
Trong tùy chọn Cài đặt bản dựng của Target , đặt giá trị của Header Header thành tên tệp PCH của bạn, với tên dự án là tiền tố (nghĩa là đối với tên dự án TestProject
và tệp PCH MyPrefixHeaderFile
, hãy thêm giá trị TestProject/MyPrefixHeaderFile.pch
vào plist).
MIPO: Bạn có thể sử dụng những thứ như $(SRCROOT)
hoặc $(PROJECT_DIR)
để đi đến con đường nơi bạn đặt .pch
dự án.
Trong tùy chọn Cài đặt bản dựng của Target , đặt giá trị của Tiêu đề tiền tố biên dịch thành YES
.
Bạn cần tạo tập tin PCH riêng
ThêmNew file -> Other-> PCH file
Sau đó thêm đường dẫn của tệp PCH này vào bản dựng của bạn setting->prefix header->path
($ (SRCROOT) /filename.pch)
$(PRODUCT_DIR)/$(PRODUCT_NAME)/PrefixHeader.pch
Để thêm tệp .pch-
1) Thêm tệp .pch mới vào dự án của bạn-> Tệp mới-> khác-> tệp PCH
2) Goto cài đặt xây dựng dự án của bạn.
3) Tìm kiếm "tiêu đề tiền tố". Bạn có thể tìm thấy điều đó dưới Apple LLVM.
4) Dán cái này vào trường $(SRCROOT)/yourPrefixHeaderFileName.pch
5) Làm sạch và xây dựng dự án. Đó là nó!!!
Nếu bạn quyết định thêm tệp .pch theo cách thủ công và bạn muốn sử dụng Objective-C giống như trước xCode 6, bạn cũng sẽ phải nhập các khung UIKit và Foundation trong tệp .pch. Nếu không, bạn sẽ phải nhập các khung này theo cách thủ công trong mỗi tệp tiêu đề. Bạn vẫn có thể thêm đoạn mã sau vì nó kiểm tra ngôn ngữ được sử dụng:
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif
Sử dụng :
$ (PRO DỰ_DIR) / Tên dự án / PrefixHeader.pch
Để thêm tệp PCH mới, hãy làm theo các bước dưới đây:
(1) Thêm fiew mới - Chọn iOS - Tệp khác và PCH
(2) thêm đường dẫn của tệp PCH này vào Dự án của bạn - BuildSetting - Ngôn ngữ Apple LLVM 6.0
Thêm đường dẫn tiêu đề tiền tố YourApplicationName (đường dẫn gốc) /filename.pch