2016-11-06 12 views
6

जब मैं उपकरणों चल रहा हूँ और लीक के लिए जाँच, यह दिखा लीक मुख्य रूप से मिलकर 10.लीक 3/iOS 10

लीक केवल आईओएस 9 में दिखाए जाते हैं जबकि आईओएस 9 .x सबकुछ सामान्य लगता है। इसके शीर्ष पर, आईओएस 10 UISwitch में या तो रद्द नहीं किया जा रहा है।

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

प्रश्न:

मैं इस बारे में चिंतित होना चाहिए और इन सभी लीक को ठीक करने या प्रतीक्षा करने के लिए कोशिश करते हैं और आशा है कि यह भावी अपडेट में ठीक किया जाएगा? यदि हां, तो क्या यह जांचने के लिए कहीं भी है कि कौन सी बग ज्ञात हैं आदि?

उत्तर

4

मुझे एक ही समस्या थी और खुदाई करने में काफी समय लगा। मैंने पाया कि यदि आप उद्देश्य-सी कोड से स्विफ्ट ऑब्जेक्ट बनाते हैं और स्विफ्ट ऑब्जेक्ट में मूल स्विफ्ट शब्दकोश प्रॉपर्टी है, तो आप इस रिसाव को देखेंगे। ऐसा नहीं होगा यदि सभी कोड स्विफ्ट हैं, और अधिक उपयोगी रूप से, यदि आप देशी स्विफ्ट शब्दकोश को NSDictionary में बदलते हैं तो यह रिसाव नहीं होगा। यह स्विफ्ट सेट और एनएसएसटी पर भी लागू होता है। मैं यह भी देखा कि रिसाव आईओएस 10 पर और iOS 9. पर नहीं

// LeakySwiftObject.swift 
class LeakySwiftObject: NSObject { 
    let dict = [String: String]() // <- Any native Swift dictionary will reproduce the leak 
} 

// ObjectiveCObject.h 
@class LeakySwiftObject; 

@interface ObjectiveCObject : NSObject 
@property (strong) LeakySwiftObject *leaky; 
@end 

// ObjectiveCObject.m 
@implementation ObjectiveCObject 

- (instancetype)init 
{ 
    self = [super init]; 
    if (self) { 
     self.leaky = [LeakySwiftObject new]; 
    } 
    return self; 
} 

@end 

// ViewController.swift 
class ViewController: UIViewController { 
    let testObj = ObjectiveCObject() 
} 

लीक होता साधन एक रिसाव रिपोर्ट:
_NativeDictionaryStorageImpl <String,String>
_NativeDictionaryStorageOwner <String,String>

+0

आप एक सरल प्रतिलिपि प्रस्तुत करने योग्य उदाहरण दे सकते हैं यह ऐप्पल को रिपोर्ट करने योग्य हो सकता है? – matt

+0

@matt मैंने नमूना कोड जोड़ा जो इस मुद्दे को पुन: उत्पन्न करता है। ऐप्पल के लिए रडार पर काम करना – bdmontz

+0

बहुत अच्छी तरह से लिखित कोड। मुझे इसे लागू करने और चलाने में कोई दिक्कत नहीं थी। हालांकि, मैं नहीं देख रहा हूं कि यह _leak_ कैसे है। उदाहरण के लिए, मेमोरी ग्राफ उपकरण किसी भी मुद्दे की रिपोर्ट नहीं कर रहा है। – matt

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