[Swift構文]lazyキーワード
lazyキーワードを付けてpropertyを宣言すると、単語の意味は他のpropertyよりも遅延します.つまり、プログラムを初めて使用するまでメモリに書き込まれません.
▼▼▼▼▼▼重要!
Lazyはvarキーワードを使用して変数として宣言する必要があります.
理由は、propertyが初期化される前に常に値を持つ必要がありますが、値がない可能性があります.だからlazy letではなくlazy varと宣言すべきだ.
(lazy letと宣言した場合、エラーが発生します.)
以下にSWIFT公式文書の例を示します.
ここで、importer変数はlazyとして宣言されます.したがって、importer変数を使用するまで、DataImporterインスタンスは作成されず、メモリに保存されません.
つまり、現在はDataManagerのデータ変数のみが使用されているため、DataImporterは初期化されていません.
「メモリを効率的に管理できます.」
たとえば、複雑なアプリケーションほど、ビューのロード時にすべてのインスタンスを作成してメモリに格納するほど、アプリケーションは過負荷で終了する危険があります.ただし、各インスタンスを使用するときに作成すると、メモリを効率的に管理できます.
上記の例では、DataImporterクラスの提供と初期化に時間がかかると仮定すると、DataManagerの作成時にDataImporterインスタンスを作成するよりも、DataImporterインスタンスを初めて使用する場合にDataImporterインスタンスを作成する方が効果的です.
UIKET使用時のコードを取得しました.
ここにはlazyキーワードとして宣言された変数が多く、各変数は最初の使用時にインスタンスを作成し、メモリに格納します.
つまり、ReviewListViewControlが表示されている場合、次のプログラムはメモリではなく、初回使用時にメモリにあります.これにより、メモリを効率的に管理できます.
💙 リファレンスサイト
https://bbiguduk.gitbook.io/swift/language-guide-1/properties
▼▼▼▼▼▼重要!
Lazyはvarキーワードを使用して変数として宣言する必要があります.
理由は、propertyが初期化される前に常に値を持つ必要がありますが、値がない可能性があります.だからlazy letではなくlazy varと宣言すべきだ.
(lazy letと宣言した場合、エラーが発生します.)
以下にSWIFT公式文書の例を示します.
ここで、importer変数はlazyとして宣言されます.したがって、importer変数を使用するまで、DataImporterインスタンスは作成されず、メモリに保存されません.
つまり、現在はDataManagerのデータ変数のみが使用されているため、DataImporterは初期化されていません.
class DataImporter {
var filename = "data.txt"
}
class DataManager {
lazy var importer = DataImporter()
var data = [String]()
}
let manager = DataManager()
manager.data.append("Some data")
manager.data.append("Some more data")
Lazy修飾語付きimporterプロパティを初めて使用すると、DataImporterインスタンスが作成され、メモリに格納されます.print(manager.importer.filename)
// Prints "data.txt"
ではlazyを使うとどんなメリットがあるのでしょうか...?「メモリを効率的に管理できます.」
たとえば、複雑なアプリケーションほど、ビューのロード時にすべてのインスタンスを作成してメモリに格納するほど、アプリケーションは過負荷で終了する危険があります.ただし、各インスタンスを使用するときに作成すると、メモリを効率的に管理できます.
上記の例では、DataImporterクラスの提供と初期化に時間がかかると仮定すると、DataManagerの作成時にDataImporterインスタンスを作成するよりも、DataImporterインスタンスを初めて使用する場合にDataImporterインスタンスを作成する方が効果的です.
UIKET使用時のコードを取得しました.
ここにはlazyキーワードとして宣言された変数が多く、各変数は最初の使用時にインスタンスを作成し、メモリに格納します.
つまり、ReviewListViewControlが表示されている場合、次のプログラムはメモリではなく、初回使用時にメモリにあります.これにより、メモリを効率的に管理できます.
💙 リファレンスサイト
https://bbiguduk.gitbook.io/swift/language-guide-1/properties
Reference
この問題について([Swift構文]lazyキーワード), 我々は、より多くの情報をここで見つけました https://velog.io/@minji0801/Swift-기초-문법-lazy-키워드テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol