Terdapat beberapa perbezaan antara keduanya. objc_msgSend (sendMessage:) adalah kerana kaedah dipanggil pada objek yang dikeluarkan.
menangkap diri dengan kuat dalam blok ini berkemungkinan membawa kepada kitaran pengekalan akan menyebabkan objek yang dicipta tidak dilepaskan. Sebagai contoh, setiap kali anda memasukkan vc, ia baru dibuat. Blok dalam vc mempunyai rujukan yang kuat kepada diri sendiri. Ini akan menyebabkan vc ini tidak dapat dikeluarkan Vc baharu akan dibuat setiap kali anda masuk, dan vc lama masih wujud. Akhirnya, aplikasi akan dikosongkan oleh sistem kerana ia mengambil terlalu banyak memori.
Ini akan menyebabkan kebocoran memori, tetapi sama ada ia akan menyebabkan ranap bergantung pada keadaan. Sebagai contoh, VC tertentu mendaftarkan pemberitahuan, tetapi disebabkan rujukan pekeliling, ia tidak dikeluarkan dengan betul Selepas itu, pemberitahuan itu disiarkan di tempat lain, maka VC akan melakukan operasi yang sepadan, mungkin jika operasi itu objek telah dikeluarkan, ia mungkin terhempas. Sukar untuk mencari ralat seperti libobjc.A.dylib objc_msgSend (sendMessage:) anda harus melihat jika terdapat maklumat lain, seperti sesuatu yang serupa dengan ini:
Terdapat beberapa perbezaan antara keduanya.
objc_msgSend (sendMessage:) adalah kerana kaedah dipanggil pada objek yang dikeluarkan.
menangkap diri dengan kuat dalam blok ini berkemungkinan membawa kepada kitaran pengekalan
akan menyebabkan objek yang dicipta tidak dilepaskan.
Sebagai contoh, setiap kali anda memasukkan vc, ia baru dibuat. Blok dalam vc mempunyai rujukan yang kuat kepada diri sendiri.
Ini akan menyebabkan vc ini tidak dapat dikeluarkan Vc baharu akan dibuat setiap kali anda masuk, dan vc lama masih wujud. Akhirnya, aplikasi akan dikosongkan oleh sistem kerana ia mengambil terlalu banyak memori.
Ia mungkin, tetapi tidak mungkin, tetapi rujukan pekeliling mesti dialih keluar.
Ini akan menyebabkan kebocoran memori, tetapi sama ada ia akan menyebabkan ranap bergantung pada keadaan.
Sebagai contoh, VC tertentu mendaftarkan pemberitahuan, tetapi disebabkan rujukan pekeliling, ia tidak dikeluarkan dengan betul Selepas itu, pemberitahuan itu disiarkan di tempat lain, maka VC akan melakukan operasi yang sepadan, mungkin jika operasi itu objek telah dikeluarkan, ia mungkin terhempas.
Sukar untuk mencari ralat seperti libobjc.A.dylib objc_msgSend (sendMessage:) anda harus melihat jika terdapat maklumat lain, seperti sesuatu yang serupa dengan ini:
Anda boleh cuba menggunakan Fabrik.