cari

Rumah  >  Soal Jawab  >  teks badan

objektif-c - Masalah tentang pelepasan memori di bawah ARC dalam pembangunan iOS

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.

曾经蜡笔没有小新曾经蜡笔没有小新2725 hari yang lalu1315

membalas semua(2)saya akan balas

  • 世界只因有你

    世界只因有你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)

    balas
    0
  • 巴扎黑

    巴扎黑2017-07-03 11:45:05

    1. Pengawal menulis semula kaedah -(void)dealloc, semak sama ada kaedah dipanggil apabila pengawal menolak atau muncul.

    2. Gunakan analisis untuk menganalisis memori Apl

    3. Jika anda menggunakan xcode versi 8.0 ke atas, anda boleh melihat peta memori.

    balas
    0
  • Batalbalas