『ゼロから学ぶSwift』学習ノート(Day 40)―構造関数
オリジナルの文章、転載を歓迎します.転載は明記してください:関東昇のブログ
構築プロセスとは逆に、インスタンスが最後に解放される場合、いくつかのリソースを消去する必要があります.このプロセスは、構築プロセスです.解析中には、解析関数と呼ばれる特殊なメソッドdeinitも呼び出されます.構造関数deinitは戻り値もパラメータもなく、パラメータのカッコも必要ないので、リロードできません.
サンプルコードを次に示します.
構造関数の呼び出しは、インスタンスが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
構築プロセスとは逆に、インスタンスが最後に解放される場合、いくつかのリソースを消去する必要があります.このプロセスは、構築プロセスです.解析中には、解析関数と呼ばれる特殊なメソッド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