में विकल्प का उपयोग करते समय मेमोरी लीक स्विफ्ट के साथ स्ट्रिंग इंटरपोलेशन का उपयोग करते समय मैं मेमोरी रिसाव का पता लगा रहा हूं। "लीक" उपकरण का उपयोग करके, यह लीक ऑब्जेक्ट को "मॉलोक 32 बाइट्स" के रूप में दिखाता है, लेकिन कोई जिम्मेदार लाइब्रेरी या फ्रेम नहीं है। यह स्ट्रिंग इंटरपोलेशन में विकल्प का उपयोग करके होता है।स्ट्रिंग इंटरपोलेशन
class MySwiftObject
{
let boundHost:String?
let port:UInt16
init(boundHost: String?, port: UInt16)
{
if boundHost {
self.boundHost = boundHost!
}
self.port = port
// leaks
println("Server created with host: \(self.boundHost) and port: \(self.port).")
}
}
हालांकि, अगर मैं बस जोड़कर टुकड़े, कोई स्मृति रिसाव से एक स्ट्रिंग के निर्माण के साथ स्ट्रिंग प्रक्षेप बदलें।
// does not leak
var message = "Server created with host: "
if self.boundHost
{
message += self.boundHost!
}
else
{
message += "*"
}
message += " and port: \(self.port)"
println(message)
क्या कुछ ऐसा है जो मैं ऊपर गलत कर रहा हूं, या बस एक स्विफ्ट बग?
मुझे यह समस्या भी आई, यह libswiftcore में 32 बाइट्स को लीक करता है जब मैंने एक प्रतिनिधि कॉलबैक में प्रिंटलन कहा। मेरा समाधान अभी जोड़ा "!" – PatrickSCLin
यदि आप इसकी स्थिति जांचना चाहते हैं तो [bugs.swift.org] (https://bugs.swift.org/browse/SR-1728) पर एक समान समस्या के लिए यहां एक बग रिपोर्ट है। – user2067021
मान लीजिए कि मुझे एक नई नई फैंसी भाषा का उपयोग करने की अपेक्षा की जानी चाहिए – Sirens