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

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

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

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

巴扎黑
巴扎黑

모든 응답(2)
左手右手慢动作

ARC는 @autoreleasepool을 포기하지 않지만 컴파일 단계에서 필요한 retain/release/autorelease 코드 호출을 삽입하는 데 도움을 줍니다.

그래서 여러분이 생각하는 것과는 달리 ARC는 여전히 출시가 지연되어 여전히 NSAutoreleasePool에 의존하고 있습니다. 이는 ARC가 아닌 모드에서 해당 함수를 수동으로 호출하는 것과 본질적으로 동일하며 단지 참조 카운팅의 정확성입니다. 보장됩니다.

참고:

  • ARC에서 개수 의미 체계 유지
  • @autoreleasepool이 무엇인가요
迷茫

@autoreleasepool을 사용하는 것이 유용합니다.
일반적인 상황에서 생성한 변수는 범위를 초과하면 해제됩니다.
그리고 함수가 매우 길고 함수 실행 중에 중간 변수가 많이 나타나서 많은 양의 메모리를 차지한다면 어떻게 해야 할까요?
@autoreleasepool을 사용하세요.
@autoreleasepool에서 생성된 변수는 @autoreleasepool이 종료되면 한 번 해제됩니다. 실제로 @autoreleasepool은 범위 계층과 동일합니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿