objective-c - ios开发中self和下划线的区分
黄舟
黄舟 2017-04-27 09:02:53
0
3
815

今天碰到一个问题,就是用到懒加载的时候,我用了self,结果报错直接蹦了,

我们老师说这是self递归引用了,可我还是不明白它们之间的区别

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

membalas semua(3)
洪涛

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. .

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!