내가 상속하는 코드에서, 나는 다음을 본 적이있다 :IBOutlet 작업을위한 읽기 전용 속성을 갖고 있습니까?
@property (readonly) IBOutlet UIImageView * bgImage;
같은 메모리 모델을 예상 할 때 :
@property (readonly, retain) IBOutlet UIImageView * bgImage;
왜 첫 번째 속성 정의가 작동하는지 혼란스러워. 문제없이.
또한 dealloc에서 release
은 다음과 같이 나타납니다.
-(void)dealloc
{
[_bgImage release];
[super dealloc];
}
누구나 설명을 해 주시면 감사하겠습니다. 나는 원래 개발자와 이야기를했고 그는 더 간결한 코드를 작성하려고 노력했다. 그래서 retain
을 메모리 모델에서 제외했다. (불필요한 것처럼 보였다.)
IBOutlet이 기본적으로 ivar IBOutlet 문처럼 취급되는지는 읽기 전용이므로 (setter가 없으므로 기본 할당 메모리 모델은 아무런 차이가 없습니다).
IBOutlet이 절대로 변경되지 않으면 메모리 모델이없는 readonly 속성을 사용하면 실제로 속성을 정의하는 데 바람직한 방법일까요?
'콘센트가 retain 또는 assign으로 선언되는지, 반대쪽 끝에있는 객체는 콘센트가있는 객체에 의해 소유됩니다. (이것은 너무 명확하지 않습니다.) 이것은'readonly'로 설정된 경우에만 해당합니까? 만약'(assign, readwrite) '이라면 확실하게 non-retainer가 사용되며'retain'은 사용되지 않을 것입니다. - 나는 그것이 단지 약간 모호한 당신의 대답의 유일한 부분이라고 언급한다. –
나는 그렇게 생각한다. 그것은 분명히 말하는 것 같다. –
@ Paul.s : 내 업데이트 참조 - 나는 참고 활동을 손으로 계산하기로 결심했으며 그 결과는 유익했다. –