Objective-C 클래스의 구현 블록 (@implementation ... @end) 내부 또는 외부에서 선언 된 C 함수 (정적 또는 비공유)의 차이점은 무엇입니까?Obj-C : @implementation 블록의 내부 또는 외부에서 선언 된 C 함수는 무엇입니까?
는 직접 객체의 내부에 찌를 필요가 있다면, 당신은 당신의 클래스의 @implementation 블록의 내부에이 기능을 넣을 수 있습니다, 그리고 당신이 인스턴스 변수에 액세스 할 수 있습니다
?이 특별히 사실이다 C 화살표 연산자. 하지만 그건 장난이 아니므로, Purity of Essence를 유지하려면 개체에 메서드 호출을 사용해야합니다. 설교의 끝.
@implementation OblateSphereoid
void drawEggThunk (DrawingContext *context, Rect areaToDraw, void *userData)
{
BWOblateSphereoid *dealie = (BWOblateSphereoid *)userData;
dealie->_frognatz = [NSColor plaidColor];
// and more stuff.
} // drawEggThunk
...
@end // OblateSphereoid
내가 이런 식으로 기능 (같은 클래스에서 선언) 내에서 내 클래스의 인스턴스 변수에 액세스 할 수 있습니다 : 여기에 악입니까?
재미있는 질문인데 (아마도 아주 나쁜 습관 일지라도) 호기심 때문에, 수업 내에서만 drawEggThunk를 호출 할 수 있습니까? –
콜백이 설정되어있을 때 self에 대한 참조를 전달하기 위해 * userData를 사용하는 것을 볼 수 있듯이 함수는 C 서브 시스템에서 호출되는 콜백 함수입니다. – jlpiedrahita