『ゼロから学ぶSwift』学習ノート(Day 40)―構造関数


オリジナルの文章、転載を歓迎します.転載は明記してください:関東昇のブログ
構築プロセスとは逆に、インスタンスが最後に解放される場合、いくつかのリソースを消去する必要があります.このプロセスは、構築プロセスです.解析中には、解析関数と呼ばれる特殊なメソッドdeinitも呼び出されます.構造関数deinitは戻り値もパラメータもなく、パラメータのカッコも必要ないので、リロードできません.
 
サンプルコードを次に示します.
class Rectangle {
    
    var width: Double
    var height: Double
    
    init(width: Double, height: Double){
        self.width   = width
        self.height  = height
    }
    
    init(W width: Double,H height: Double){
        self.width   = width
        self.height  = height
    }
    
    deinit {              // 
        print(" ...")
        self.width = 0.0
        self.height  = 0.0       
    }
}
 
var rectc1: Rectangle? = Rectangle(width: 320, height: 480) // rectc1
print(" :\(rectc1!.width) x\(rectc1!.height)")
rectc1 = nil                     // 
 
var rectc2: Rectangle? = Rectangle(W: 320, H: 480)       // rectc2
print(" :\(rectc2!.width) x\(rectc2!.height)")
rectc2 = nil                     // 

構造関数の呼び出しは、インスタンスがnilに割り当てられ、インスタンスがメモリを解放する必要があることを示し、解放する前に構造関数を呼び出してから解放します.
 
実行結果は次のとおりです.
長方形:320.0 x 480.0
構造関数を呼び出す...
長方形:320.0 x 480.0
構造関数を呼び出す...
 
構造関数はクラスにのみ適用され、列挙や構造体には適用されません.同様の方法は、C++では構造関数とも呼ばれ、C++の構造関数は、不要なメモリリソースを解放するために使用されることが多い.一方、Swiftでは、メモリ管理は自動参照カウント(ARC)を採用しており、構造関数で不要なインスタンスメモリリソースを解放する必要はありませんが、ファイルを閉じるなどの処理をここで完了する必要があるクリーンアップ作業もあります.
 
关东升新浪微博@tony_へようこそ関東昇.智捷教室の微信公共プラットフォームに注目し、最新技術文章、図書、教程情報のより多くの逸品iOS、Cocos、モバイル設計課程を理解し、智捷教室の公式サイトに注目してください.http://www.zhijieketang.com智捷教室フォーラムのウェブサイト:http://51work6.com/forum.php