मैं कई UIPasteboard ऑब्जेक्ट्स में बहुत सारी लीक देखता हूं। आज तक, मैंने इस वर्ग के बारे में कभी नहीं सुना और (जाहिर है) कार्यक्रम में खुद का उपयोग नहीं किया। यहाँ एक स्क्रीनशॉट है:

Instruments Screenshot

मैं इन लीक से छुटकारा पाने के लिए क्या कर सकता हूं? क्या मैं भी इस समस्या को ठीक से देख रहा हूँ?

1
Ravi 29 सितंबर 2011, 22:46
मुझे यकीन नहीं है कि यह कैसे करना है, लेकिन मेरा मानना ​​​​है कि इसमें मदद करने के लिए एक ऐसी मार्गदर्शिका है। क्या आप यही ढूंढ रहे हैं? raywenderlich.com/2696/ …
 – 
Nate the Noob
29 सितंबर 2011, 22:49
पहली चीज जो आप कर सकते हैं वह है उस कोड को पेस्ट करना जो आप पेस्टबोर के संबंध में उपयोग करते हैं ताकि हम देख सकें कि यह कैसे लीक हो सकता है।
 – 
Zigglzworth
29 सितंबर 2011, 22:50
@ ज़िगलज़वर्थ: जैसा कि मैंने प्रश्न में उल्लेख किया है, मैंने कोड में पेस्टबोर्ड का उपयोग नहीं किया है, इसलिए मुझे नहीं पता कि यहां क्या पेस्ट करना है।
 – 
Ravi
29 सितंबर 2011, 23:09
1
आपके कोड में कुछ UIPastBoards का उपयोग कर रहा होगा। क्या आप किसी भी प्रकार के तृतीय पक्ष कोड का उपयोग कर रहे हैं?
 – 
Zigglzworth
29 सितंबर 2011, 23:17
@ ज़िग्लज़वर्थ: तुम बहुत सही हो! मैं openUDID पैकेज का उपयोग कर रहा था और यह लीक हो गया। github.com/ylechelle/OpenUDID/blob/master/OpenUDID.m यहीं पर कोड है। क्या आप चाहते हैं कि मैं आपका दूसरा उत्तर स्वीकार करूं?
 – 
Ravi
29 सितंबर 2011, 23:40

3 जवाब

सबसे बढ़िया उत्तर

यह जांचना सुनिश्चित करें कि समस्या किसी तीसरे पक्ष के कोड में UIPasteBoard उदाहरण है या नहीं।

0
Zigglzworth 30 सितंबर 2011, 11:58
मेरे पास OpenUDID लाइब्रेरी के अंदर UIPasteboard क्लास में लीक हुई वस्तुओं की एक स्ट्रिंग थी। आशा है कि यह ठीक हो जाएगा!
 – 
Ravi
1 अक्टूबर 2011, 01:13

स्टैक ट्रेस के बिना, आप बहुत कुछ नहीं कर सकते।

UIPasteboard का उपयोग कॉपी और पेस्ट को लागू करने के लिए किया जाता है। डेस्कटॉप पर इसका उपयोग ड्रैग एंड ड्रॉप के लिए भी किया जाता है। इन दो कार्यों के अलावा, मुझे वास्तव में यकीन नहीं है कि लोग आमतौर पर इसका उपयोग किस लिए करते हैं, लेकिन यह ऐप्स के बीच डेटा के स्निपेट भेजने का एक तरीका है (मान लीजिए कि दोनों ऐप्स पेस्टबोर्ड को देखना जानते हैं)।

0
Lily Ballard 29 सितंबर 2011, 22:49
मेरा कोड कोई कॉपी/पेस्ट क्रिया नहीं करता है। कोई और विचार?
 – 
Ravi
29 सितंबर 2011, 23:09
@ रवि: पता लगाएं कि आपको इंस्ट्रूमेंट्स में स्टैक ट्रेस क्यों नहीं मिल रहा है। आपको मॉलोक स्टैक लॉगिंग चालू करने की आवश्यकता हो सकती है।
 – 
Lily Ballard
29 सितंबर 2011, 23:38
मैंने स्टैक ट्रेस को प्रतिबिंबित करने के लिए छवि को अपडेट किया है। कोई विचार? मुझे अब पूरा यकीन है कि यह OpenUDID से है। यह कोड है: github.com/ylechelle/OpenUDID/blob/master/OpenUDID। मी
 – 
Ravi
30 सितंबर 2011, 00:13
ज़रूर :) लेकिन इस उत्तर के संबंध में एक टिप्पणी नोट करें कि यह वास्तव में तृतीय पक्ष कोड था
 – 
Zigglzworth
30 सितंबर 2011, 00:31

यदि यह एक एप्लिकेशन पेस्टबोर्ड नहीं है जिसे आपने सेट किया है, तो यह एक सिस्टम पेस्टबोर्ड है, इसलिए आपको इसके सभी आइटम और उन वस्तुओं के लिए सभी प्रकार प्राप्त करने के बजाय GeneralPasteBoard तक पहुंचने की आवश्यकता होगी और उनकी स्ट्रिंग और डेटा मान शून्य पर सेट करें।

generalpasteboard UIPasteBoard *pb = [UIPasteboard pasteBoardWithName:UIPasteboardNameGeneral];
for (UIPasteBoardItem *pbItem in [pb items]) {

      for (NSString pbType in [pbItem pasteboardTypes]) {
       [pbItem setData:nil forPasteboardType:pbType];
       [pbItem setValue:nil forPasteboardType:pbType];
      }
}

इसे अपने आवेदन की शुरुआत में डालने का प्रयास करें .... फिर भी यह अजीब है कि सामान्य पेस्टबोर्ड लीक हो रहा है ... वैसे, यह फाइंड पेस्टबोर्ड भी हो सकता है UIPasteboardNameFind (एक सिस्टम पेस्टबोर्ड भी)

ध्यान दें कि यह पता लगाने के लिए है कि क्या यह सामान्य पेस्टबोर्ड है जो अंतिम वितरित ऐप में उपयोग नहीं कर रहा है। यह भी जांचना सुनिश्चित करें कि उपयोग किए गए किसी भी तृतीय पक्ष कोड में समस्या UIPastBoard उदाहरण है या नहीं।

-1
Zigglzworth 30 सितंबर 2011, 00:33
2
वाह, यह एक भयानक विचार लगता है। जहां कोई नहीं है वहां UIPasteboard एक्सेस जोड़ना, और बिना किसी अपेक्षित लाभ के, उपयोगकर्ता के क्लिपबोर्ड को पूरी तरह से उड़ा देना। रवि, ​​कृपया ऐसा मत करो।
 – 
Lily Ballard
29 सितंबर 2011, 23:39
: यह वास्तविक ऐप में उपयोग करने के लिए नहीं है। यह पता लगाने के लिए है कि क्या रिसाव सामान्य पेस्टबोर्ड के कारण होता है।
 – 
Zigglzworth
30 सितंबर 2011, 00:29