3

iOS 용 ARC를 사용할 때 다음과 같은 점이 있습니까?자동 참조 계산 및 합성 속성

@property (strong, nonatomic) NSObject *someProperty; 
... 
@synthesize someProperty; 

//and then in the init method, either: 
self.someProperty = aProperty; 

//or 
someProperty = aProperty; 

나는 ARC없이, self.someProperty 실제로 객체에 retain 메시지를 보냅니다 합성 된 setter 메소드를 호출 것을 알고있다. 하지만 이제는 ARC를 사용하여 점 표기법을 사용하여 이와 같은 속성을 설정하는 것이 중요합니까?

일반적으로 ARC는 참조 횟수에 대해 전혀 걱정할 필요가 없다는 것을 의미합니까? 아니면 내가 코드를 작성한 방식으로 ARC가 실수를 저지를 수있는 특정 상황이 있습니까?

답변

6

차이점은 ARC가없는 경우와 같습니다. 점 표기법을 사용하면 합성 된 setter를 호출하고 ivar에 직접 할당하면 setter 메서드를 사용하게됩니다.

ARC에서 두 옵션 사이의 메모리 관리에는 차이점이 없지만 두 옵션 사이에서 의식적인 결정을해야합니다. 예를 들어 ivar에 직접 지정하면 KVO를 무시하고 예를 들어 설정 메소드를 진행하는 동안 약간의 차이가 있습니다 대부분의 경우 느리지 만 안전 할 수 있습니다. 나중에 재산을 atomic으로 만들거나 세터를 재정의하기로 결정할 때.

개인적으로 나는 종종 KVO를 우회하는 것이 바람직한 init을 제외하고 개인적으로 재산 표기 self.abc = ...;을 사용합니다. 즉, ARC 전에 사용한 것과 같은 추론을 사용하십시오.

+1

접근 자 메서드의 또 다른 미묘한 이점은 변경 점을보기 위해 중단 점을 설정할 수 있다는 것입니다. –