program tip

ARC 시대의 속성 대 ivar

radiobox 2020. 12. 31. 08:09
반응형

ARC 시대의 속성 대 ivar


ivar를 설정하면 변수 설정이 strong한정자로 기본 설정되기 때문에 이제 할당되는 객체가 유지된다는 것을 이해합니다 . strongivar는 선언 된 객체의 범위에 있고 변수 범위 내에서 객체를 유지하기 때문에 ivar를 포함하는 객체가 아직 살아있는 동안에는 ivars 값이 해제되지 않습니다.

이 올바른지?

그렇다면 메모리 관리 측면에서 유지하는 (강한) 속성과 단순한 ivar 사이에 더 이상 차이가 없다고 생각하는 것이 옳습니까?


변수 인 경우 :

  1. ARC를 사용하여 클래스에서 선언됩니다 .
  2. 클래스 구현에만 사용됩니다 (클래스 인터페이스의 일부로 노출되지 않음).
  3. KVO가 필요하지 않습니다 .
  4. 사용자 정의 getter / setter가 필요하지 않습니다.

그런 다음 해당 @property/ 없이 ivar로 선언 @synthesize하고 구현 내에서 직접 참조하는 것이 적절합니다. 클래스 구현 파일에서이 ivar를 선언하는 것은 캡슐화 와 인라인입니다 .

// MyClass.h
@interface MyClass : ParentClass
@end

// MyClass.m
@implementation MyClass {
    NSString *myString;
}

- (void)myMethod {
    myString = @"I'm setting my ivar directly";
}
@end
  • 이 ivar는 __strongARC 컴파일러에서 처리됩니다 .
  • nil객체 인 0경우 또는 원시인 경우 로 초기화됩니다 .

KVO를 사용할 수 없으며 ARC를 사용할 때 매우 유사한 인스턴스 변수를 사용하여 사용자 정의 getter 및 setter를 수행 할 수 없습니다 .

참조 URL : https://stackoverflow.com/questions/7836182/property-vs-ivar-in-times-of-arc

반응형

'program tip' 카테고리의 다른 글

git 브랜치 : gh-pages  (0) 2020.12.31
Java Micro ORM 해당  (0) 2020.12.31
충돌 해결 병합  (0) 2020.12.31
Git merge --squash와 --no-commit의 차이점  (0) 2020.12.31
복합 키 Entity Framework 만들기  (0) 2020.12.31