अनिवार्य रूप से जब आप समझ में आता है तो आप इशारा पहचानकर्ता बना सकते हैं, जोड़ सकते हैं और निकाल सकते हैं। और "जब यह समझ में आता है" कुछ चीजों के आधार पर भिन्न होता है, लेकिन आम तौर पर केवल यह कि आप उन्हें इवर के रूप में रखेंगे या नहीं। ARC
के साथ कुंजी मजबूत संदर्भों का प्रबंधन कर रही है; ARC
ivars डिफ़ॉल्ट रूप से मजबूत हैं।
तो मान लें कि आप एक टैप पहचानकर्ता जोड़ते हैं। इस परिदृश्य में आपको फिर से पहचानकर्ता तक पहुंचने की आवश्यकता नहीं है। मैं इसे इस तरह बनाउंगा:
-(void)viewDidLoad{
[super viewDidLoad];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[self.view addGestureRecognizer:tap];
}
इस परिदृश्य के साथ, आपको इस पहचानकर्ता को प्रबंधित करने के लिए और कुछ नहीं करने की आवश्यकता है। दृश्य प्रणाली इसके लिए मजबूत संदर्भ रख रही है। आप बस इतना बैठते हैं और handleTap:
पर कॉल करने के लिए प्रतीक्षा करें। जब दृश्य अनलोड करता है तो इस टैप पहचानकर्ता को हटा दिया जाएगा।
यह परिदृश्य viewWillAppear:
में इस पहचानकर्ता को जोड़ने के लिए भी अच्छा नहीं होगा क्योंकि घटनाओं की एक श्रृंखला की कल्पना करना मुश्किल नहीं है जो कई पहचानकर्ताओं को बनाया जाएगा।
तो तर्कसंगत रूप से यदि आप उपस्थिति विधियों में एक पहचानकर्ता जोड़ना चाहते हैं तो आपको उन्हें ivar में किसी प्रकार का संदर्भ रखना होगा। लेकिन फिर यह हमेशा एक बुरा विचार नहीं है। आमतौर पर आपके पहचानकर्ताओं के संदर्भ का कारण <UIGestureRecognizerDelegate>
विधियों के तर्क में सहायता करना है, यदि उनका उपयोग किया जाता है।
मैं बाद में संलग्नक के लिए initWith..
विधि में कोई पहचानकर्ता कभी नहीं जोड़ूंगा। एकमात्र फायदा यह है कि आपके द्वारा बनाए गए किसी भी पहचानकर्ता को दृश्य नियंत्रक के पूरे जीवन में रखा जाएगा। लेकिन चूंकि एक पहचानकर्ता स्पष्ट रूप से दृश्य प्रणाली का हिस्सा है, इस तरह के muddies- MVC
ऊपर कोको बड़ा है। नेविगेशन स्टैक पर नियंत्रकों की कम स्मृति स्थिति दृश्य में भी शुद्ध किया गया है, लेकिन इस मामले में पहचानकर्ता किसी भी वास्तविक कारण के लिए स्मृति (उसमें बड़ी वस्तुएं नहीं) का उपयोग कर रह सकता है।
आप निश्चित रूप से view(Will/Did)Appear:
विधि में एक पहचानकर्ता जोड़ सकते हैं और view(Will/Did)Disappear:
में इसे हटा सकते हैं। मेरी वरीयता नहीं है।मुझे नहीं लगता कि सिर्फ modal
दृश्य प्रस्तुत किया गया है और हटाया गया है या नेविगेशन push
/pop
ऐसा हुआ है कि मुझे अपने पहचानकर्ताओं को हटा देना और दोबारा जोड़ना चाहिए।
मैं अपने पहचानकर्ताओं को तत्काल और संलग्न करने के लिए लगभग हमेशा viewDidLoad
का उपयोग करने की सलाह दूंगा। कम स्मृति स्थिति में मदद के लिए बस viewDidUnload
में किसी भी मजबूत संदर्भ को नेल-आउट करना याद रखें। और फिर ARC
के साथ dealloc में ivars के साथ कुछ भी करने की आवश्यकता नहीं है।
मैं पहले से ही उस के माध्यम से स्किम किया है लेकिन मेरे प्रश्न का उत्तर नहीं मिला। – mrd3650
@TheLion: "क्षमा करें, वह पृष्ठ नहीं मिला।" – Colas
क्षमा करें सेब ने इसे बदल दिया है [यहां] [https://developer.apple.com/library/ios/documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/GestureRecognizer_basics/GestureRecognizer_basics.html) यह एक ही संसाधन के लिए नया यूआरएल है। इसे उत्तर देने के लिए धन्यवाद @ कोला –