Saya memiliki aplikasi yang ditulis dalam Kakao dengan ARC yang memungkinkan pengguna membuat dan membuka jendela baru. (Ini seperti model dokumen, tapi saya tidak menggunakan nsdocument.)
Setiap jendela baru memerlukan sejumlah besar memori, yang ingin saya dapatkan kembali jika pengguna menutup jendela.
Saya memahami bahwa [window close]
hanya menyembunyikan jendela, tetapi saya juga menggunakan [[self window] setReleasedWhenClosed:YES]
, tetapi NSwindowcontroller
dan jendelanya masih ada setelah penutupan.
Objek di file xib jendela saya berisi sejumlah array c besar yang dialokasikan dengan malloc, jadi saya juga mencoba membebaskannya dengan mengirimkan panggilan ke pusat notifikasi di dalam metode windowWillClose:
pengontrol jendela, di mana notifikasi tersebut memanggil metode di dalam objek yang relevan untuk membebaskan array C sebelum jendela ditutup. Sekali lagi, ini tidak berpengaruh - meskipun metode yang mencoba untuk membebaskan array dipanggil dan array tampaknya dibebaskan, menurut Activity Monitor, tidak ada memori yang dilepaskan. Saya juga telah mencoba membebaskan array di -(void) dealloc
, tetapi tampaknya ini tidak pernah berakhir.
Jadi, bagaimana cara terbaik mendapatkan kembali memori ketika jendela ditutup?
Sunting: Menurut komentar di halaman stackoverflow ini oleh Benoit,
"Namun, pelepasan saat ditutup diabaikan untuk jendela yang dimiliki oleh pengontrol jendela."
Benarkah itu? Jika ya, bagaimana cara menyiasatinya di ARC?