반응형
ARC 시대의 속성 대 ivar
ivar를 설정하면 변수 설정이 strong
한정자로 기본 설정되기 때문에 이제 할당되는 객체가 유지된다는 것을 이해합니다 . strong
ivar는 선언 된 객체의 범위에 있고 변수 범위 내에서 객체를 유지하기 때문에 ivar를 포함하는 객체가 아직 살아있는 동안에는 ivars 값이 해제되지 않습니다.
이 올바른지?
그렇다면 메모리 관리 측면에서 유지하는 (강한) 속성과 단순한 ivar 사이에 더 이상 차이가 없다고 생각하는 것이 옳습니까?
변수 인 경우 :
- ARC를 사용하여 클래스에서 선언됩니다 .
- 클래스 구현에만 사용됩니다 (클래스 인터페이스의 일부로 노출되지 않음).
- KVO가 필요하지 않습니다 .
- 사용자 정의 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는
__strong
ARC 컴파일러에서 처리됩니다 . 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 |