2011-10-12 3 views
0

Google 및 Apple의 코드 가이드를 읽었습니다. 둘 다 자체없이 인스턴스 변수에 액세스합니다. 해당 인스턴스 변수에 대한 속성을 선언 했음에도 불구하고 메서드 구현 내부에서 getter 및 setter를 호출합니다. 그 이유는 무엇입니까?자기를 사용하지 않는 이유. 내부 클래스 호출

제 생각에는 자기를 사용하십시오. 클래스의 메소드 구현 내에서 인스턴스 변수를 설정하고 가져 오는 호출은 보유 수를 쉽게 관리 할 수있게합니다.

클래스 내에 getter 및 setter를 사용할 때주의해야 할 사항이 있습니까?

답변

1

다릅니다. 정상적인 사용에서는 항상 접근자를 사용해야합니다.

그러나 init 및 dealloc 메소드의 경우 직접 ivars를 사용하여 변수를 해제하고 설정해야합니다. setter가 클래스 초기화 또는 할당 해제 중에 트리거하지 않는 부작용을 가질 수 있기 때문입니다.

실제로 init의 일부로 접근자를 사용하면 문제가 발생하지 않을 것입니다. 하지만 나는 커스텀 세터가 아무 것도 기대하지 않고서 dealloc에서 접근 자의 사용이 앱을 추락시키는 수많은 실제 충돌을 보았습니다. 그것이 충돌하지 않더라도, 수업이 거의 죽기 직전에 무의미한 일을 많이하고있을 수 있습니다.

관련 문제