다크호스 프로그래머---OC 노트의 ARC 개념 및 원리 학습

2365 단어 Objective-C 베이스
------Java 교육, 안드로이드 교육, iOS 교육,.Net 교육 --------
1. ARC의 개념과 원리
1. 지침의 분류
1) 강력한 포인터: 기본적으로 모든 포인터는 키워드strong입니다.
2) 비고정 포인터:weak 키워드는 약한 바늘을 수식합니다
다음과 같이 비고정 포인터를 선언합니다.
__weakPserson *p;
 
 
2、ARC란?
1) Automatic Reference Counting, ARC 자동 참조 개수ARC를 사용하는 것은 매우 간단하다. 예전처럼 코드를 작성하기만 하면, 리턴,release,autorelease 세 가지 키워드를 영원히 쓰지 않아도 된다. 이것이 바로 ARC의 기본 원칙이다.XCode 기본 ARC 사용
2) ARC가 켜졌을 때 컴파일러는 자동으로 코드에 알맞은 곳에 Retain,release,autorelease를 삽입한다. 개발자로서 컴파일러가 ARC를 잘못 사용하지 않으면 전혀 걱정할 필요가 없다.
3) ARC는 다른 언어의'쓰레기 수거'메커니즘과 달리 [ARC는 컴파일 특성], [쓰레기 수거는 운행 시 특성]
 
3. ARC 작업 원리 및 판단 준칙
 
[ARC의 판단 기준]
대상을 가리키는 강한 지침이 없다면 대상은 방출될 것이다
[주의] ARC를 사용할 때 [인용계수기]를 잠시 잊어버리세요. 판단 기준이 바뀌었기 때문입니다.
 
4. ARC 메커니즘 아래: 대상에 강한 바늘이 가리키지 않으면 즉시 방출된다
5. ARC 메커니즘 판단
[주의] 프로젝트 정보, ARC가 yes인지 직접 볼 수 있습니다
1)release 메서드를 사용할 수 없음
2) autorelease 호출 불가
3) [super dealloc]를 호출할 수 없지만 dealloc 방법을 다시 쓸 수 있습니다
4) retainCount 호출 불가
6. ARC 주문 대상 메모리 관리[중점]
1. ARC 메커니즘 아래: 대상에 강한 바늘이 가리키지 않으면 즉시 방출된다
2. ARC 메커니즘에서
    @autoreleasepool {
        Student *st = [Student studentWithAge:24];
       // __strong Student *st2 = st;
       // Student st2 = st;
        // ARC   :         ,     
        //        nil
        __weak Student *st3 = st;
   }

7、
ARC
다음 순환 인용 문제
1. [해결 방안] 한쪽은strong을 사용하고 한쪽은weak을 사용한다.
2, ARC 아래 @property 매개 변수 문제
[strong 강력 지침] OC 대상에 사용되며 MRC의retain에 해당한다
[weak 비고정 포인터] UI 컨트롤에 많이 사용
8. ARC 사용 특징 및 주의사항
8.1 ARC 특징 요약
1) release, retain, retainCount을 호출할 수 없음
2) dealloc을 다시 쓰는 것은 허용되지만 [super dealloc] 호출은 허용되지 않습니다.
3) @property 매개 변수:
strong: MRC 메커니즘의retain(OC 대상에 적용), 구성원 변수는 강력한 지침
weak: MRC 메커니즘의 assign(OC 대상에 적용), 구성원 변수는 약한 지침
assgin: 비 OC 대상 유형, 즉 기초 유형에 적용
 
8.2 ARC 사용 시 주의사항
1) ARC에서 약한 포인터가 가리키는 대상이 없으면 약한 포인터를 비웁니다 (값은 nil)
2)__weakPerson *p = [Person new];이렇게 하는 것은 불합리하다.대상이 만들어지면 방출됩니다. 대상이 풀리면 OC는 바늘을nil로 설정합니다.
3) ARC에서property 매개 변수에서retain을 사용하지 않고strong이나weak을 사용하며 dealloc에서는 [super dealloc]가 필요하지 않습니다.
@property (nonatomaic, strong) Dog *dog;이는 생성된 구성원 변수dog는 강력한 바늘로 이전의retain에 해당한다
4) 약한 포인터일 경우 weak로 변경합니다.
9. ARC 모드에서 ARC가 아닌 클래스와 호환되는 방법
방법:
MRC 파일의 [compiler flag] - fno-objc-arc 설정

좋은 웹페이지 즐겨찾기