여기에 선택을 지정하는 나는 애플의 "타이머 프로그래밍에 관한 주제"에서 본 예제 코드 생성 :왜있는 NSInvocation 두 번
NSMethodSignature *methodSignature = [self
methodSignatureForSelector:@selector(invocationMethod:)];
NSInvocation *invocation = [NSInvocation
invocationWithMethodSignature:methodSignature];
[invocation setTarget:self];
[invocation setSelector:@selector(invocationMethod:)];
NSDate *startDate = [NSDate date];
[invocation setArgument:&startDate atIndex:2];
당신이 볼 수 있듯이, 우리가 invocationMethod
을 지정해야합니다 : 한 번 NSMethodSignature
에, 그리고 나서 NSInvocation
의 setSelector
에서 두 번째입니다. 내게있어, 이것은 중복되는 것 같습니다. 왜 애플이 이런 디자인을 한 것입니까?
몇 가지 문제점 : 반환 유형'instancetype'을 지정했지만'NSInvocation'을 반환합니다. 'NSInvocation' 클래스에서 이것을 호출하지 않는다면 이것은 잘못된 것이다. 이름은'methodSignatureWithTarget : andSelector :'(BTW,'WithTarget' 다음에':'를 잊어 버렸습니다)이지만 호출을 반환합니다.따라서 이름은'invocationWithTarget : andSelector :'이어야합니다. – DarkDust
@DarkDust 고마워, 그건 내가 서둘러 대답을 가르쳐 줄거야 (분명히 카테고리는 NSInvocation에 있어야한다). –
쿨러가'NSObject','invocationWithSelector :'에 대한 카테고리 메소드가 될 것이라고 생각합니다. 감사합니다. – DarkDust