文字列補間でオプションを使用するとメモリリークが発生する

水差し

Swiftで文字列補間を使用しているときにメモリリークを検出しています。「Leaks」インスツルメントを使用すると、リークされたオブジェクトが「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).")
    }
}

ただし、文字列補間を、ピースを追加して文字列を作成するだけに置き換えると、メモリリークは発生しません。

    // 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のバグですか?

水差し

私自身の質問に答える...

オプションを直接使用するのではなく、文字列補間を使用する場合は、条件付きバインディングが正しい方法のようです。コンパイラがそれを許可する理由がわかりません。

注:誰かがより良い答えまたはより良い説明を持っている場合は、新しい答えを追加してください。

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).")
    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

glibでガベージコレクションを使用するとメモリリークが発生する

分類Dev

非同期オーバーシンクを実行すると、.NETでメモリリークが発生する

分類Dev

Go v 1.5で-linksharedオプションを使用するとリンクエラーが発生する

分類Dev

Tensorflow:セッションを閉じている間でもメモリリークが発生しますか?

分類Dev

printfを使用してyaccで文字列リテラルトークンを印刷すると、セグメンテーション違反が発生します

分類Dev

Delphi-10.2.1でアプリケーションを再コンパイルするとメモリリークが発生しますか?

分類Dev

アダプティブポップオーバーセグエを使用し、ナビゲーションコントローラで宛先をラップすると、メモリリークが発生します

分類Dev

アプリケーションクラス内にシングルトンを作成すると、メモリリークが発生しますか?

分類Dev

アプリケーションクラスをシングルトンにすると、メモリリークが発生しますか?

分類Dev

ソーススクリプトでparLapplyを使用すると、メモリリークが発生します

分類Dev

VisualStudioをWebアプリケーションと一緒に実行するとメモリリークが発生する

分類Dev

文字列phpで単語を検索し、PHPスクリプト内でアクションを作成すると構文エラーが発生します

分類Dev

forループ内でdb接続を使用するとメモリリークが発生する

分類Dev

新しいスコープでangularの$ compileを使用するとメモリリークが発生する

分類Dev

メモリ不足になる前にアプリケーションを一時停止すると、セグメンテーション違反が発生する

分類Dev

リンクリストメンバーでstrcpyを使用するとセグメンテーション違反が発生する

分類Dev

Webアプリケーションでクラスを使用すると、文字が不明瞭なHttpWebResponseが発生します

分類Dev

Swift-文字列内の文字を反復処理するとメモリリークが発生します

分類Dev

配列サブスクリプションでポインターを使用して構造変数を呼び出すとエラーが発生する

分類Dev

平均を使用すると、VBAでアプリケーション定義またはオブジェクト定義のエラーが発生します

分類Dev

シェルスクリプトで2つの文字列パターンがその後発生する間に文字列を置き換える方法は?

分類Dev

配列に.appendオプションを使用すると、Swift / Playgroundでエラーが発生します

分類Dev

文字列メモリ割り当てでメモリリークが発生する可能性があります

分類Dev

UIViewControllerRepresentableを使用するとSwiftUIのメモリリークが発生する

分類Dev

DirectoryServices.AccountManagementを使用するとメモリリークが発生する

分類Dev

io_service :: runを使用するとメモリリークが発生する

分類Dev

JavaFX3Dでオブジェクトを削除するとメモリリークが発生する

分類Dev

YARNクラスターモードでSparkアプリケーションを送信するときにExceptionInInitializerErrorが発生するのはなぜですか?

分類Dev

GNU Parallel -qオプションにより、BCPの「不明なオプション」エラーが発生します(ローカルホストとリモートホストで異なる文字列引用符)

Related 関連記事

  1. 1

    glibでガベージコレクションを使用するとメモリリークが発生する

  2. 2

    非同期オーバーシンクを実行すると、.NETでメモリリークが発生する

  3. 3

    Go v 1.5で-linksharedオプションを使用するとリンクエラーが発生する

  4. 4

    Tensorflow:セッションを閉じている間でもメモリリークが発生しますか?

  5. 5

    printfを使用してyaccで文字列リテラルトークンを印刷すると、セグメンテーション違反が発生します

  6. 6

    Delphi-10.2.1でアプリケーションを再コンパイルするとメモリリークが発生しますか?

  7. 7

    アダプティブポップオーバーセグエを使用し、ナビゲーションコントローラで宛先をラップすると、メモリリークが発生します

  8. 8

    アプリケーションクラス内にシングルトンを作成すると、メモリリークが発生しますか?

  9. 9

    アプリケーションクラスをシングルトンにすると、メモリリークが発生しますか?

  10. 10

    ソーススクリプトでparLapplyを使用すると、メモリリークが発生します

  11. 11

    VisualStudioをWebアプリケーションと一緒に実行するとメモリリークが発生する

  12. 12

    文字列phpで単語を検索し、PHPスクリプト内でアクションを作成すると構文エラーが発生します

  13. 13

    forループ内でdb接続を使用するとメモリリークが発生する

  14. 14

    新しいスコープでangularの$ compileを使用するとメモリリークが発生する

  15. 15

    メモリ不足になる前にアプリケーションを一時停止すると、セグメンテーション違反が発生する

  16. 16

    リンクリストメンバーでstrcpyを使用するとセグメンテーション違反が発生する

  17. 17

    Webアプリケーションでクラスを使用すると、文字が不明瞭なHttpWebResponseが発生します

  18. 18

    Swift-文字列内の文字を反復処理するとメモリリークが発生します

  19. 19

    配列サブスクリプションでポインターを使用して構造変数を呼び出すとエラーが発生する

  20. 20

    平均を使用すると、VBAでアプリケーション定義またはオブジェクト定義のエラーが発生します

  21. 21

    シェルスクリプトで2つの文字列パターンがその後発生する間に文字列を置き換える方法は?

  22. 22

    配列に.appendオプションを使用すると、Swift / Playgroundでエラーが発生します

  23. 23

    文字列メモリ割り当てでメモリリークが発生する可能性があります

  24. 24

    UIViewControllerRepresentableを使用するとSwiftUIのメモリリークが発生する

  25. 25

    DirectoryServices.AccountManagementを使用するとメモリリークが発生する

  26. 26

    io_service :: runを使用するとメモリリークが発生する

  27. 27

    JavaFX3Dでオブジェクトを削除するとメモリリークが発生する

  28. 28

    YARNクラスターモードでSparkアプリケーションを送信するときにExceptionInInitializerErrorが発生するのはなぜですか?

  29. 29

    GNU Parallel -qオプションにより、BCPの「不明なオプション」エラーが発生します(ローカルホストとリモートホストで異なる文字列引用符)

ホットタグ

アーカイブ