Rumah > Soal Jawab > teks badan
今天碰到一个问题,就是用到懒加载的时候,我用了self,结果报错直接蹦了,
我们老师说这是self递归引用了,可我还是不明白它们之间的区别
PHP中文网2017-04-27 09:04:53
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.
黄舟2017-04-27 09:04:53
Jika dirujuk, tidak akan ada perbezaan Ia adalah penunjuk yang sama Jika ia ditetapkan, akan ada perbezaan oo. Tiada langkah kekal. Tidak juga
曾经蜡笔没有小新2017-04-27 09:04:53
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. .