Rumah > Soal Jawab > teks badan
看过好几次这种描述:在初始化方法或者是 dealloc 中最好不要使用属性,因为无法确定 self 到底是不是确实调用的是你想要的实例,这个是为什么呢?
漂亮男人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
给我你的怀抱2017-05-02 09:31:36
Kerana ia akan menghasilkan rujukan bulat, seperti perwakilan, yang tidak akan dikeluarkan
漂亮男人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