今天碰到一個問題,就是用到懶加載的時候,我用了self,結果報錯直接蹦了,
我們老師說這是self遞歸引用了,可我還是不明白它們之間的區(qū)別
人生最曼妙的風景,竟是內(nèi)心的淡定與從容!
self.x digunakan untuk mengakses sifat Ia sebenarnya mengakses kaedah getX atau setX, tetapi kebanyakan masa, pengkompil secara automatik melaksanakan kedua-dua kaedah ini untuk anda dan secara automatik mencipta pembolehubah contoh yang berkaitan, supaya anda tidak berasa. tiba. _x ialah pembolehubah contoh yang dibuat secara automatik.
Sebagai contoh, anda mentakrifkan atribut berikut:
@property(nonation, strong) NSString *x;
Terdapat sekumpulan kod tersembunyi (dipermudahkan) seperti berikut:
NSString *_x;
-(NSString *)x {
return _x;
}
-(void)setX:(NSString *)x {
_x = x;
}
Saya rasa kod pemuatan malas anda membebankan kaedah get bagi atribut Self.x sebenarnya memanggil kaedah [self x] Jika anda menggunakan self.x dalam kaedah get, maka self.x ini untuk memanggil [self x], ini adalah rekursi tak terhingga.
Jika dirujuk, tidak akan ada perbezaan Ia adalah penunjuk yang sama Jika ia ditetapkan, akan ada perbezaan oo. Tiada langkah kekal. Tidak juga
Saya baru meneka bahawa anda mungkin:
self.some = [self some];
-(type)some{
self.some = [...];
}
Kemudian apabila anda memanggil diri.some, ia bersamaan dengan menggunakan [self some], dan self.some dalam sesetengahnya memanggil [self some] semula. . . Satu gelung terbentuk. . .
Skor bawah bermaksud akses terus, memintas set dan dapatkan. .