ARC 지식 요약

1968 단어

ARC

  • 자동 참조 계수(Autotic Reference Counting)는 메모리 관리에서 참조에 대해 자동 계수를 적용하는 기술입니다.OC에서 ARC 메커니즘을 사용하고 컴파일러를 통해 관리한다(주의: ARC는 OC 문법이 아니다)
  • 메모리 관리에 대한 사고 방식

  • 자신이 생성한 대상은 자신이 소지하고,
  • 자기가 생성한 대상이 아니면 자신도 소지할 수 있다
  • 자신이 보유한 대상이 더 이상 필요하지 않을 때 석방
  • 자신이 보유한 대상이 아니면 석방할 수 없음
  • 자신이 생성한 대상은 자신이 가지고 있다
      allloc/new/copy/mutableCopy                    
    copy mutableCopy        NSCopying NSMutableCopying       
    

    자신이 생성하지 않은 대상은 자신도 가질 수 있다
      return  ,  NSMutableArray  array  
    

    자신이 보유한 대상이 더 이상 필요하지 않을 때 방출
                ,       ,  release
    
  • OC 대상에 인용계수라는 정수치를 저장
  • alloc 또는retain을 호출한 후 인용 계수값을 1 더하기
  • release를 호출한 후 인용 계수값이 1로 감소
  • 인용 계수 값이 1인 후에release를 계속 호출하면 시스템은 dealloc 방법으로 대상을 띄운다(이때의 인용 계수 값이 반드시 0이 아니라 방출해야 한다는 것을 알았으면 하나를 줄일 필요가 없다)
  • 애플에서 대상용 메모리 블록의 분배는 메모리 블록 헤드를 고려할 필요가 없다
  • 인용 계수표에 각 메모리 블록 주소가 저장되어 있으며 각 기록에서 각 메모리 블록 주소로 추술할 수 있다
  • autorelease


    자동 방출, C 언어의 자동 변수 (국부 변수) 와 유사한 특성 autorelease 사용 방법
  • NSAutoreleasePool 객체 생성 및 보유
  • 할당된 대상의 autorelease 방법을 호출
  • NSAutoreleasePool 대상을 폐기한 후 autorelease 방법을 호출한 모든 대상을 추가하면release 방법
  • 을 실행합니다

    ARC 규칙


    소유권 수식자


    strong/weak/autoreleaseing/unsafe_unretained
  • strong은 인용 계수 +1을 변수가 작용역을 초과한 후에 포기하고 폐기 방법을 자동으로 호출합니다
  • weak은 인용 계수를 증가하지 않으며, 어떤 대상의 약한 인용을 가지고 있을 때 대상이 폐기되면 이 약한 인용은 자동으로 효력을 상실하고nil이 부여된 상태에 있다.weak를 사용하면 순환 인용을 방지할 수 있습니다
  • unsafe_unretained와 weak은 비슷하지만 실효된 대상에 nil
  • 을 부여하지 않습니다

    ARC 규칙

  • retain/release/retainCount/autorelease
  • 를 사용할 수 없습니다.
  • NSAllocateObject/NSDeallocateObject
  • 를 사용할 수 없습니다.
  • 메모리 관리 방법의 명칭 규칙을 준수해야 한다
  • dealloc
  • 를 현시적으로 호출하지 마십시오.
  • NSAutoreleasePool 객체 대신 @autoreleasepool 블록
  • 사용
  • NSZone)
  • 대상형 변수는 C 언어 구조체의 구성원이 될 수 없음
  • 변환 id와void*( bridge 사용)
  • 표시

    좋은 웹페이지 즐겨찾기