2011-03-22 11 views
6

मैं IBOutlet लेने मैं निम्न विधि का उपयोग किसी भी संपत्ति की घोषणा करने के लिए पिछले 1-2 महीने और हर समय से iPhone के लिए विकसित किया गया है:XCode iPhone स्वत: संपत्ति, संश्लेषण और delloc

ज फ़ाइलों में:

@interface .... 
{ 
    controlType varName; 
} 

@property() IBOutlet controlType varName; 

मीटर फ़ाइलों में:

शीर्ष पर

-

@synthesize varName;

in delloc method - [varName release];

हालांकि विधि अच्छा है, लेकिन यह बहुत अच्छा है, जब इसके एक जोड़ी ओ नहीं ले रही है संपत्ति घोषित करने के लिए बस मिनट।

क्या संपत्तियों, आईबीओटलेट्स, आईबीएक्शन या मूल डेटा चर घोषित करने के लिए कोई स्वचालित प्रक्रिया है।

मुझे उम्मीद है कि इस परिदृश्य के लिए कुछ स्वचालित तरीके होनी चाहिए क्योंकि यह एक बहुत ही बुनियादी प्रक्रिया है।

धन्यवाद सब कुछ।

+0

आप भूल गए 'self.varName = nil;?' में viewDidUnload ;-) –

+0

मैं कभी ऐसा .. :( मैं किसी भी समस्या का सामना नहीं किया था, लेकिन क्या इस self.varName = करना नहीं के बराबर होता है – necixy

उत्तर

4

वास्तव में, हाँ!

आपको वास्तविक iVar घोषित करने की आवश्यकता नहीं है।

संक्षेप में, बस इस भाग को छोड़ दें: controlType varName;

अभी के लिए, आपको अभी भी स्पष्ट रूप से "संश्लेषित" करने की आवश्यकता है।

(जहाँ तक मैं देख सकता हूँ, वे संभवतः को स्वचालित कर सकता है कि भविष्य में। लेकिन अब के लिए आप सेटर और गेटर बनाने के लिए "संश्लेषण" करने के लिए है।)

तुम अब भी स्मृति को रिहा करने की क्या ज़रूरत है - वास्तव में कोई तरीका नहीं है जिसे स्वचालित किया जा सकता है, क्योंकि मेमोरी हैंडलिंग "असली हे-मैन प्रोग्रामिंग" है।

किसी भी नए chums पढ़ने के लिए, "स्वयं" को मत भूलना। संपत्ति का उपयोग करते समय हिस्सा।

प्लस ध्यान दें कि XCode4 में भी एक नई स्वचालित चीज़ है। बस इंटरफ़ेस बिल्डर से अपनी .h फ़ाइल पर खींचें, और यह आपके लिए सबकुछ करेगा - इसे आजमाएं!


अपने suplementary सवाल का जवाब में: एक IBOutlet विशेष रूप से एक संपत्ति होने के लिए नहीं की जरूरत नहीं है - आप सिर्फ एक सामान्य सस्ते इवर उपयोग कर सकते हैं। दूसरी ओर, यदि आप चाहें, तो आप एक संपत्ति का उपयोग कर सकते हैं। इसके अलावा: आप ivar घोषित करने के लिए परेशान नहीं होने की नई चाल (2011) का भी उपयोग कर सकते हैं, केवल संपत्ति घोषणा का उपयोग करें, और वहां एक आईबीओटलेट फेंक दें!

+0

धन्यवाद दोस्त, मेरे दिमाग में कई बार एक बात आती है कि संपत्ति और वर्ग चर के बीच क्या अंतर है? वे एक दूसरे से अलग कैसे हैं? क्या हमें प्रत्येक आईबीओलेट या किसी भी डेटा सदस्य के लिए संपत्ति घोषित करने की आवश्यकता है सरणी? – necixy

0

आप संपत्ति घोषणा को बदलकर वस्तु को मुक्त करने के लिए स्वयं को बचा सकते हैं। यदि आप का उपयोग करें:

@property (assign) IBOutlet controlType varName; 

अभ्यस्त अपने दृश्य पर कहा जा बना रहेगा ताकि आप अभ्यस्त बाद में इसे जारी किया है। यह आम तौर पर सुरक्षित होता है क्योंकि जब वे माता-पिता में जोड़े जाते हैं तो विचारों को बनाए रखा जाता है। यदि आप किसी कारण से अपने माता-पिता से विचार हटा रहे हैं तो आपको उन्हें बनाए रखना होगा।

+0

मुझे लगता है कि आईबी में बनाए गए विचारों को हटाने के लिए मेरे लिए यह बहुत दुर्लभ है। आमतौर पर मैंने उन्हें हटाने और उन्हें फिर से जोड़ने के बजाय छुपे हुए दृश्य सेट किए हैं। अगर आप कुछ भूल जाते हैं तो आमतौर पर यह एक दुर्घटना हो जाएगी ओप के रूप में एक रिसाव के लिए तैयार जो मुझे सौदा करने के लिए आसान लगता है। – skorulis

+0

यदि आप सहयोगी विकास कर रहे हैं तो यह एक बुरी आदत की तरह लगता है। मैं एक्सकोड 4.x में नई सुविधा पसंद करता हूं और आशा करता हूं कि एप्पल ग्रहण, इंटेलिज, इत्यादि के साथ प्रतिस्पर्धा करने के लिए उपकरण को बेहतर बनाएगा – mobibob

0

Here's घोषित गुणों के टेडियम को स्वचालित करने के लिए एक xcode स्क्रिप्ट।

+0

यह एक्सकोड 4 –

8

एक और जिसे बहुत से लोगों को पता नहीं है कि आप आईबीएक्शन या आईबीओलेट्स बनाने के लिए इंटरफेस बिल्डर से अपनी हेडर फ़ाइल में खींच सकते हैं।

नोट: सहायक संपादक को आईबी के अंदर XIB पर ध्यान केंद्रित करने के साथ खोलें।

यदि आप अपना आईबीओटलेट बनाते हैं तो इस तरह एक्सकोड स्वचालित रूप से संपत्ति जोड़ता है, इसे संश्लेषित करता है, इसे देखने में शून्य पर सेट करता है और इसे डेलोक में रिलीज़ करता है।

आप आईबी ऑब्जेक्ट से अपनी हेडर फ़ाइल में खींचते हैं वैसे ही जब आप दृश्य ऑब्जेक्ट्स और उनके फ़ाइल स्वामियों (नीचे स्क्रीनशॉट) के बीच कनेक्शन बनाते हैं। enter image description here

+0

में काम नहीं करेगा क्या यह एक्सकोड 4.0 से पहले काम करता है? – necixy

+0

मेरे एक्सकोड 3.2.3 के लिए काम नहीं करता है। :( – necixy

2

एक शानदार उपकरण है जो पूरी प्रक्रिया को गति देता है: accessorizer

आप controlType varName; लिखते हैं और इसे चुनते हैं और कुछ बटन दबाते हैं और एक्सेसोरिज़र संपत्ति, init, dealloc, viewDidUnload और आपके लिए बहुत कुछ बना देगा। आपको बस अपनी परियोजना में कोड पेस्ट करना होगा।

इसे आज़माएं, एक डेमो उपलब्ध है।

+0

इस महान उपकरण को इंगित करने के लिए धन्यवाद। मेरी राय में, यह जवाब होना चाहिए। –

संबंधित मुद्दे