2012-05-08 4 views
3

파티클의 위치와 같이 자주 액세스 할 변수에 @property을 사용해야합니까? @property은 메서드 호출의 오버 헤드를 추가하는 변수에 대한 getter 및 setter를 만듭니다. 대부분의 상황에서 눈에 띄는 것은 아니지만 속성에 초당 최대 백만 번까지 액세스하는 경우 (다른 인스턴스 내에서)?@property를 언제 사용합니까?

답변

4

Objective-C 런타임이 @property 접근 자에 대해 일정량의 오버 헤드를 추가한다는 것이 맞습니다. 그러나 Objective-C 클래스간에 정보를 공유하는 방법으로는이 방법이 적합합니다. 응용 프로그램을 측정하고 @property 오버 헤드가 실제로 처리 병목 현상이라고 판단한 경우에만 다른 접근 방식을 고려해야합니다.

현대 프로세서가 GHz의 범위에서 작동 명심 뭔가 "초당 백만 번"일어나고 만 MHz의 범위이다. 기회는 귀하의 병목 현상이 다른 곳에서 일어날 가능성입니다. 당신이은 문제가 있다면 할 경우

, 당신은 항상 더 큰 목표 - C ParticleCloud 클래스의 내부에 간단한 Particle 구조의 배열에 입자 처리를 할 수 있습니다. 이렇게하면 나머지 프로그램에서 Particle 개체의 정확한 구현을 무시하고 @property 접근 자의 필요성을 제거 할 수 있습니다.

1

실제로 getter와 setter를 사용하고 있습니까? 그렇지 않은 경우 속성을 사용하지 마십시오. 그렇다면 사용하십시오. 오버 헤드가 중요한지 여부를 확인하는 유일한 방법은 자체 성능 테스트를 수행하고 프로세스 전후의 시간을 기록하고 똑같은 시뮬레이션을 실행하고 경과 시간을 비교하는 것입니다. 실적이 좋지만 무시할 수 있다면 걱정하지 마세요. 당신은 당신이 사용하고있는 다른 어떤 방법보다 @property가 더 빠르다는 것을 알 수 있습니다.

0

제 생각에는 객체 속성에 @property을 사용해야합니다. 나는 그것이 바보 같이 들리지만 속성에 의해 다른 클래스에서 액세스 할 수있는 "공용"속성을 의미한다는 것을 알고 있습니다. 클래스에만 해당 속성이 필요하면 구현 내에서 클래스를 비공개로 유지하면 작업이 더 부드럽고 깨끗해진다.

@property의 장점 중 하나는 읽기 전용 (즉, 설정자 없음)으로 지정할 수 있다는 것입니다. 그래서 이것은 공개 API의 문제입니다.