Rumah > Soal Jawab > teks badan
Klik butang pada halaman 1 untuk melompat ke halaman 2. Pada masa ini, memori meningkat sebanyak 5 MB Kemudian klik butang pada halaman 2 untuk mengetepikan halaman 2. Pada masa ini, kaedah dealloc halaman 2 dilaksanakan, tetapi. memori 5 MB tidak dikeluarkan. kenapa?
Bukankah memori di bawah ARC dikeluarkan tepat pada masanya?
Bagaimanakah kita harus menilai sama ada pengawal paparan atau objek benar-benar dikeluarkan?
Nota: Saya menyemak penggunaan memori melalui sesi nyahpepijat Xcode.
世界只因有你2017-07-03 11:45:05
Tambahkan kod berikut pada kelas dan nilai status keluaran kelas ini dengan melihat sama ada terdapat log kelas apabila ia diketepikan:
#pragma mark - dealloc
-(void)dealloc {
NSLog(@"dealloc %@", NSStringFromClass([self class]));
}
Sebagai contoh, log nama kelas MyViewController
, 如果释放成功的话会有dealloc MyViewController
.
Kemudian nyahpepijat sekali lagi untuk mengetahui puncanya.
Situasi yang mungkin:
Di suatu tempat strong
kelas ini dirujuk
在block
中直接使用self
(应该使用__weak typeof(self) weakSelf = self
,然后在block中使用weakSelf
)
巴扎黑2017-07-03 11:45:05
Pengawal menulis semula kaedah -(void)dealloc
, semak sama ada kaedah dipanggil apabila pengawal menolak atau muncul.
Gunakan analisis untuk menganalisis memori Apl
Jika anda menggunakan xcode versi 8.0 ke atas, anda boleh melihat peta memori.