포인터를 고유 키로 사용하는 한 쌍의 함수를 사용하고 있습니다. 키로 사용할 상수 포인터를 선언하고 싶습니다. 이 작업을 수행하는 가장 안전하고 명확한 접근 방법은 무엇입니까?상수 포인터를 선언하는 가장 확실한 방법은 무엇입니까?
여기에는 두 가지 접근 방법이 있지만 둘 다 짧은 임기가 있습니다.
자체의 참조 포인터 :
static const void * const propertyKey = &propertyKey; //... objc_getAssociatedObject(object, propertyKey);
단점 : 선언이 길고 찾고 무서운! 그것이 무엇인지 모르는 사람을 쉽게 혼란시킬 수 있습니다. Upside : 사용하기 쉽도록 이해하면 어렵습니다.
참조해야 정적을 const :
static const char propertyKey; //... objc_getAssociatedObject(object, &propertyKey);
단점 : 사용하면 변수는 놓치기 쉬운, 이는 단순히 사용하는 대신 참조해야합니다 (그러나 컴파일러는 형식 불일치로이 문제를 지적해야). 값이 할당되도록 선언을 수정하면 포인터의 고유성이 더 이상 보장 될 수 없으므로 심각한 영향을 미칠 수 있습니다. 위쪽 : 선언은 더 쉽게 할 수 있습니다.
나는 이것들 중 어느 하나가 즉시 명백하다고 생각하지 않는다. 더 좋은 제안이 있습니까?
어떤 문제를 해결하려고합니까? – Sebivor
정적 배열에 대한 포인터를 암시 적 배열의 키로 사용하면 아무런 이점이 없어 보입니다. 왜 정적 변수를 사용하지 않는가? – Sebivor
@modifiablelvalue'objc_setAssociatedObject()'는 키가'void'에 대한 포인터가되어야하기 때문에. –