cari

Rumah  >  Soal Jawab  >  teks badan

objective-c - ios开发中self和下划线的区分

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

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

黄舟黄舟2763 hari yang lalu865

membalas semua(3)saya akan balas

  • PHP中文网

    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.

    balas
    0
  • 黄舟

    黄舟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

    balas
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新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. .

    balas
    0
  • Batalbalas