objective-c - 既然设置了ARC,为什么还要使用@autoreleasepool
巴扎黑
巴扎黑 2017-04-24 09:10:51
0
2
434

1、既然设置了ARC,为什么还需要@autoreleasepool,有什么好处?
池子做的是运行时延迟释放,ARC已经在编译时解决了手动管理的问题,那么就没必要使用@autoreleasepool,还占内存。
2、ARC频繁释放内存 和@autoreleasepool一起释放 感觉还是前者 要好些,
这不是像数据连接池一样可以共享资源。只是延迟释放内存(又不能共享内存)。

按着这个推论在ARC条件下,没必要使用@autoreleasepool。

我知道这种想法有问题,但是不知道是哪里,新手问题多,莫喷

巴扎黑
巴扎黑

membalas semua(2)
左手右手慢动作

ARC tidak meninggalkan @autoreleasepool, tetapi membantu anda memasukkan retain/release/autorelease panggilan kod yang diperlukan semasa fasa penyusunan.

Jadi, tidak seperti yang anda fikirkan, ARC masih tertunda keluaran dan masih bergantung pada NSAutoreleasePool Ia pada asasnya sama seperti memanggil fungsi tersebut secara manual dalam mod bukan ARC, ia hanyalah pengkompil akan terjamin.

Rujukan:

  • Kekalkan semantik kiraan dalam ARC
  • Apa itu @autoreleasepool
迷茫

Menggunakan @autoreleasepool adalah berguna.
Dalam keadaan biasa, pembolehubah yang anda buat akan dikeluarkan apabila ia melebihi skopnya.
Dan jika fungsi anda sangat panjang dan banyak pembolehubah perantaraan muncul semasa menjalankan fungsi anda, menduduki sejumlah besar memori, apakah yang perlu anda lakukan?
Gunakan @autoreleasepool.
Pembolehubah yang dibuat dalam @autoreleasepool akan dikeluarkan sekali apabila @autoreleasepool tamat. Malah, @autoreleasepool adalah bersamaan dengan lapisan skop.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan