Xcode में Prefix.pch फ़ाइल क्या है?


100

इतने सारे डेवलपर्स विभिन्न सुविधा मैक्रो को जोड़ रहे हैं Prefix.pch। लेकिन मेरा सवाल यह है कि वह Prefix.pchफाइल क्या है ।

  • यदि मैं उस Prefix.pchफ़ाइल को अपने से हटा देता हूं Xcode, तो क्या मेरा आवेदन चलेगा या यह कोई त्रुटि दिखाएगा? या निर्माण के दौरान यह दुर्घटनाग्रस्त हो जाएगा?

  • मैं बिना Prefix.pchफाइल के अपना आवेदन कैसे चला सकता हूं


जवाबों:


117

शीर्ष लेख।

यह क्या है?

A Prefix.pchएक पूर्वनिर्धारित हेडर है। पहले से तैयार हेडर का आविष्कार तेजी से संकलन करने के लिए किया गया था । एक ही हेडर फ़ाइलों को बार-बार पार्स करने के बजाय, ये फाइलें समय से पहले एक बार पार्स हो जाती हैं।

Xcode

Xcode में, आप उन हेडर फ़ाइलों का आयात जोड़ते हैं, जिन्हें आप "प्रीफ़िक्स हेडर" में चाहते हैं और सक्षम करते हैं Precompile Prefix Headerताकि वे पहले से तैयार हो जाएँ। लेकिन उपसर्ग हेडर के पीछे का विचार प्री-कंपाइलिंग से अलग है।

एक उपसर्ग शीर्ष लेख को प्रत्येक स्रोत फ़ाइल के प्रारंभ में शामिल किया गया है। यह ऐसा है जैसे प्रत्येक स्रोत फ़ाइल जोड़ता है

#import "Prefix.pch"

फ़ाइल के शीर्ष पर, इससे पहले कि कुछ और।

इसे निकाल रहे हैं।

आप पहले से तैयार हेडर को हटा सकते हैं। इस प्रश्न का उत्तर थ्रेड में पहले ही दिया जा चुका है। इसमें आपको आवश्यक जानकारी के साथ-साथ उपयोगी टिप्पणियों की भी जानकारी है।

क्या Xcode प्रोजेक्ट से Prefix.pch फ़ाइल को निकालना ठीक है?


24

Prefix.pch फ़ाइल क्या है?

.Pch एक पूर्व संकलित हैडर है।

C और C ++ प्रोग्रामिंग भाषाओं में, एक हेडर फाइल एक फाइल है जिसका टेक्स्ट C प्रीप्रोसेसर द्वारा स्वचालित रूप से किसी अन्य स्रोत फ़ाइल में शामिल किया जा सकता है, आमतौर पर स्रोत फ़ाइल में कंपाइलर निर्देशों के उपयोग द्वारा निर्दिष्ट किया जाता है।

उपसर्ग हेडर संकलित किए जाते हैं और कैश में संग्रहीत होते हैं, और फिर संकलन के दौरान स्वचालित रूप से प्रत्येक फ़ाइल में शामिल होते हैं। यह संकलन को गति दे सकता है, और आपको इसका उपयोग करने वाली प्रत्येक फ़ाइल में एक आयात विवरण जोड़कर एक फ़ाइल शामिल करने देता है। जब भी आप उन्हें बदलते हैं, तो उनकी आवश्यकता नहीं होती है और वास्तव में धीमी गति से संकलन होता है।

हां, आप .pch फ़ाइल के बिना प्रोजेक्ट को संकलित और चला सकते हैं

Xcode में, अपने लक्ष्य की बिल्ड सेटिंग्स (कमांड-ऑप्शन-ई, बिल्ड टैब) पर जाएं और Precompile Prefix Header (GCC_PRECOMPILE_PREFIX_HEADER) को अनचेक करें। आप चाहें तो उपसर्ग हैडर सेटिंग का मान भी निकाल सकते हैं।

यह भी ध्यान दें कि,

एक। Pch फ़ाइल में मैक्रोज़ न रखें! .Pch फ़ाइल, परिभाषा के अनुसार, एक परियोजना विशिष्ट पूर्वनिर्धारित हेडर है। यह वास्तव में परियोजना के संदर्भ से परे उपयोग नहीं किया जाना चाहिए और इसमें वास्तव में #includes और #imports कुछ भी नहीं होना चाहिए।

यदि आपके पास कुछ मैक्रोज़ हैं और ऐसे जिन्हें आप हेडर के बीच साझा करना चाहते हैं, तो उन्हें अपने स्वयं के हेडर फ़ाइल में कॉमन करें - Common.h या जो भी - और #include .pp की शुरुआत में।


कृपया इस पुरानी खोज को कम करने के कारण को इंगित करने के लिए एक टिप्पणी जोड़ने पर विचार करें।
हेमांग

7

उपसर्ग हेडर संकलित किए जाते हैं और कैश में संग्रहीत होते हैं, और फिर संकलन के दौरान स्वचालित रूप से प्रत्येक फ़ाइल में शामिल होते हैं। यह संकलन को गति दे सकता है, और आपको इसका उपयोग करने वाली प्रत्येक फ़ाइल में एक आयात विवरण जोड़कर एक फ़ाइल शामिल करने देता है। जब भी आप उन्हें बदलते हैं, तो उनकी आवश्यकता नहीं होती है और वास्तव में धीमी गति से संकलन होता है।

आम तौर पर .pchफ़ाइल नामकरण गठन होता हैyourProjectName-Prefix.pch


1

इतिहास:

#include => #import => .pch

#include बनाम #import

Precompiled Headers - उपसर्ग। pch

#includeबनाम @importमें एक नुकसान है - धीमी बिल्ड समय क्योंकि एक कंपाइलर को कई बार .hआयात और पार्स करना होगा क्योंकि कई फाइलें आयात की गई थीं।

Precompiled header file - .pch- आम हेडर इकट्ठा करता है। जब यह फ़ाइल पहले से तैयार की जाती है, तो इसका उपयोग स्रोत फ़ाइलों में किया जा सकता है, जो निर्माण समय को गति देते हैं।

आइए Prefix.pchनमूने पर एक नज़र डालें :

#ifdef __OBJC__
    #import <UIKit/UIKit.h>
    #import <Foundation/Foundation.h>
#endif

जोड़ने के लिए .pchकरने के लिए फ़ाइल जाने Build Settings:

यहां छवि विवरण दर्ज करें

डेवलपर को .pchउस फ़ाइल को प्रबंधित करना होगा जो उसे समर्थन करने के लिए अतिरिक्त लागत लगाती है।

अगला कदम @import[अबाउट] है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.