`+load`と`+initialize`
1608 ワード
+load
公式文書の説明: oc runtime , 。
+load , 。
:
1. framework
2、 +load
3、 C++ c/c++
4、 framework
:
* +load
* +load +load
+load
メソッドの呼び出しタイミング:+load
メソッドは1回しか呼び出されず、このクラスがプロジェクトに導入されたときに実行され、このクラスが使用されるかどうかにかかわらず、main
関数の前に実行されます.分類された+load
メソッドの呼び出し順序はCompile Sources
の順序と一致し、demo検証の下でこれらの問題を書きます: person
Student person
person + category1、person + category2
+load ,teacher 。
+(void)load {
NSLog(@"%s",__FUNCTION__);
}
:
2019-07-22 15:42:21.453315+0800 AF3.0[50305:1631956] +[Person load]
2019-07-22 15:42:21.454037+0800 AF3.0[50305:1631956] +[Student load]
2019-07-22 15:42:21.467899+0800 AF3.0[50305:1631956] +[Student(category1) load]
2019-07-22 15:42:21.468000+0800 AF3.0[50305:1631956] +[Student(category2) load]
親優先サブクラス呼び出し
+load
、分類呼び出し+load
はCompile Sources
の順序と一致していることがわかります.+initialize
の公式文書:`+initialize ` 。
`runtime` `+initialize ` , 。
`runtime` `+initialize ` , `+initialize ` , , `+initialize ` .
`+initialize ` , `+initialize ` , `+initialize `,
`+initialize ` :
+ (void)initialize {
if (self == [ClassName self]) {
// ... do the initialization ...
}
}