HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 在字符串插值中使用选项时内存泄漏大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在使用 Swift进行字符串插值时检测到内存泄漏.使用“泄漏”工具,它将泄漏的对象显示为“Malloc 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).")
    }
}

但是,如果我通过附加片段简单地构建String来替换字符串插值,则不会发生内存泄漏.

// does not leak
    var message = "Server created with host: "
    if self.boundHost
    {
        message += self.boundHost!
    }
    else
    {
        message += "*"
    }
    message += " and port: \(self.port)"
    println(messagE)

上面有什么我做错了,或者只是一个Swift bug?

解决方法

回答我自己的问题……

在使用字符串插值时,条件绑定似乎是正确的方法,而不是直接使用选项.不知道为什么编译器甚至允许这样做.

注意:如果有人有更好的答案或更好的解释,请添加新的答案.

init(boundHost: String?,port: UInt16)
{
    if boundHost {
        self.boundHost = boundHost!
    }
    self.port = port

    if let constBoundHost = self.boundHost
    {
        println("Server created with host: \(constBoundHost) and port: \(self.port).")
    }
    else
    {
        println("Server created with host: * and port: \(self.port).")
    }
}

大佬总结

以上是大佬教程为你收集整理的ios – 在字符串插值中使用选项时内存泄漏全部内容,希望文章能够帮你解决ios – 在字符串插值中使用选项时内存泄漏所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。