Jawaban:
Saya curiga karena modul, yang menghapus kebutuhan untuk #import <Cocoa/Cocoa.h>
.
Ke tempat untuk meletakkan kode yang akan Anda masukkan dalam header awalan, tidak ada kode yang harus Anda masukkan dalam header awalan. Masukkan impor Anda ke file yang membutuhkannya. Masukkan definisi Anda ke file mereka sendiri. Letakkan makro Anda ... di mana saja. Berhenti menulis makro kecuali tidak ada cara lain (seperti saat Anda membutuhkan __FILE__
). Jika Anda benar-benar membutuhkan makro, letakkan di header dan masukkan.
Header awalan diperlukan untuk hal-hal yang sangat besar dan digunakan oleh hampir semua yang ada di seluruh sistem (seperti Foundation.h
). Jika Anda memiliki sesuatu yang besar dan di mana-mana, Anda harus memikirkan kembali arsitektur Anda. Header awalan membuat kode digunakan kembali dengan keras, dan memperkenalkan masalah build yang halus jika ada file yang terdaftar dapat berubah. Hindari mereka sampai Anda memiliki masalah waktu pembangunan yang serius yang dapat Anda tunjukkan ditingkatkan secara dramatis dengan header awalan.
Dalam hal ini Anda dapat membuat satu dan mengirimkannya ke dentang, tetapi sangat jarang bahwa itu adalah ide yang bagus.
EDIT: Untuk pertanyaan spesifik Anda tentang HUD yang Anda gunakan di semua pengontrol tampilan Anda, ya, Anda harus benar-benar mengimpornya ke setiap pengontrol tampilan yang benar-benar menggunakannya. Ini membuat ketergantungannya jelas. Ketika Anda menggunakan kembali pengontrol tampilan Anda di proyek baru (yang umum jika Anda membangun pengontrol dengan baik), Anda akan segera tahu apa yang diperlukan. Ini sangat penting untuk kategori, yang dapat membuat kode sangat sulit untuk digunakan kembali jika tersirat.
File PCH tidak ada di sana untuk menghilangkan ketergantungan daftar. Anda masih harus mengimpor UIKit.h
atau Foundation.h
sesuai kebutuhan, seperti yang dilakukan templat Xcode. Alasan PCH adalah untuk meningkatkan waktu pembuatan ketika berhadapan dengan header yang sangat besar (seperti di UIKit).
TWAPIManager.m
, misalnya, ke proyek lain, Anda akan mendapatkan kesalahan yang TWALog()
tidak didefinisikan, tanpa petunjuk tentang di mana menemukannya. Saya mengalami masalah itu pada beberapa proyek besar yang mencoba membagikan kode. Membuat TWAPILog.h
dan mengimpornya memecahkan ini dengan biaya dev sepele.
Tanpa pertanyaan apakah layak atau tidak, Anda dapat menambahkan file PCH secara manual:
Tambahkan file PCH baru ke proyek: File baru> Lainnya> file PCH .
Pada opsi Pengaturan Bangun Target , tetapkan nilai Prefix Header ke nama file PCH Anda, dengan nama proyek sebagai awalan (yaitu untuk nama proyek TestProject
dan nama file PCH MyPrefixHeaderFile
, tambahkan nilai TestProject/MyPrefixHeaderFile.pch
ke plist).
TIP: Anda dapat menggunakan hal-hal seperti $(SRCROOT)
atau $(PROJECT_DIR)
untuk sampai ke jalur di mana Anda meletakkannya .pch
dalam proyek.
Pada opsi Pengaturan Bangun Target , tetapkan nilai Precompile Prefix Header ke YES
.
Anda perlu membuat file PCH
Tambahkan sendiriNew file -> Other-> PCH file
Kemudian tambahkan path file PCH ini ke build Anda setting->prefix header->path
($ (SRCROOT) /filename.pch)
$(PRODUCT_DIR)/$(PRODUCT_NAME)/PrefixHeader.pch
Untuk menambahkan file .pch-
1) Tambahkan file .pch baru ke proyek Anda-> File baru-> lainnya-> file PCH
2) Goto pengaturan bangunan proyek Anda.
3) Cari "header awalan". Anda dapat menemukannya di Apple LLVM.
4) Tempel ini di bidang $(SRCROOT)/yourPrefixHeaderFileName.pch
5) Bersihkan dan bangun proyek. Itu dia!!!
Jika Anda memutuskan untuk menambahkan file .pch secara manual dan Anda ingin menggunakan Objective-C seperti sebelumnya xCode 6, Anda juga harus mengimpor kerangka kerja UIKit dan Foundation dalam file .pch. Kalau tidak, Anda harus mengimpor kerangka kerja ini secara manual di setiap file header. Anda tetap dapat menambahkan kode berikut karena akan menguji bahasa yang digunakan:
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif
Gunakan:
$ (PROJECT_DIR) / Nama proyek / PrefixHeader.pch
Untuk menambah file PCH baru ikuti langkah-langkah berikut:
(1) Tambahkan Fiew Baru - Pilih iOS - Lainnya dan File PCH
(2) tambahkan jalur file PCH ini ke Proyek Anda - BuildSetting - Apple LLVM 6.0 Bahasa
Tambahkan Set Header Prefiks Header YourApplicationName (root-path) /filename.pch