1、既然设置了ARC,为什么还需要@autoreleasepool,有什么好处?
池子做的是运行时延迟释放,ARC已经在编译时解决了手动管理的问题,那么就没必要使用@autoreleasepool,还占内存。
2、ARC频繁释放内存 和@autoreleasepool一起释放 感觉还是前者 要好些,
这不是像数据连接池一样可以共享资源。只是延迟释放内存(又不能共享内存)。
按着这个推论在ARC条件下,没必要使用@autoreleasepool。
我知道这种想法有问题,但是不知道是哪里,新手问题多,莫喷
ARC는
@autoreleasepool
을 포기하지 않지만 컴파일 단계에서 필요한retain
/release
/autorelease
코드 호출을 삽입하는 데 도움을 줍니다.그래서 여러분이 생각하는 것과는 달리 ARC는 여전히 출시가 지연되어 여전히
NSAutoreleasePool
에 의존하고 있습니다. 이는 ARC가 아닌 모드에서 해당 함수를 수동으로 호출하는 것과 본질적으로 동일하며 단지 참조 카운팅의 정확성입니다. 보장됩니다.참고:
@autoreleasepool을 사용하는 것이 유용합니다.
일반적인 상황에서 생성한 변수는 범위를 초과하면 해제됩니다.
그리고 함수가 매우 길고 함수 실행 중에 중간 변수가 많이 나타나서 많은 양의 메모리를 차지한다면 어떻게 해야 할까요?
@autoreleasepool을 사용하세요.
@autoreleasepool에서 생성된 변수는 @autoreleasepool이 종료되면 한 번 해제됩니다. 실제로 @autoreleasepool은 범위 계층과 동일합니다.