cari

Rumah  >  Soal Jawab  >  teks badan

objective-c - OC 在初始化方法或者是 dealloc 中最好不要使用属性,为什么?

看过好几次这种描述:在初始化方法或者是 dealloc 中最好不要使用属性,因为无法确定 self 到底是不是确实调用的是你想要的实例,这个是为什么呢?

習慣沉默習慣沉默2757 hari yang lalu687

membalas semua(3)saya akan balas

  • 漂亮男人

    漂亮男人2017-05-02 09:31:36

    Di manakah anda menontonnya? Itu semua adalah masa lalu, tiada sekatan dalam ARC, anda boleh menggunakannya sesuka hati.

    Pada zaman dahulu pengurusan memori manual, memanggil atribut akan melibatkan penambahan atau penolakan pembilang rujukan, dan self = [super ...] objek yang dimulakan tidak semestinya objek kelas semasa, ia mungkin "varian" atau kelas peribadi (objc dalam kelas mempunyai perbezaan antara class dan metaclass), jadi jika anda tidak tahu cara menambah atau menolak pembilang rujukan dalam kaedah penetap atribut, anda hanya boleh mengekalkan dan melepaskan untuk ivar.

    - (id)initWithString:(NSString *)str
    {
        self = [super init];
        if (self) {
            _foo = [str copy];
        }
        return self;
    }
    
    - (void)dealloc
    {
        [_foo release];
        [super dealloc];
    }

    kekalkan(salinan,baharu) dan keluarkan muncul secara berpasangan

    balas
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-02 09:31:36

    Kerana ia akan menghasilkan rujukan bulat, seperti perwakilan, yang tidak akan dikeluarkan

    balas
    0
  • 漂亮男人

    漂亮男人2017-05-02 09:31:36

    Kerana ada kategori (Kategori), setter, getter, KVO, dan lain-lain anda perlu memberi perhatian kepadanya
    Yang paling penting adalah kerana klasifikasi boleh memanggil atribut dan kaedah pengkelasan. tetapi _ tidak berfungsi, anda perlu memberi perhatian

    balas
    0
  • Batalbalas