objective-c 블록의 콜백 매개 변수를 사용하여 직접 호출하려는 인스턴스 메서드가 있습니다. 콜백에서 간단한 1 라이너 이상을 수행해야 할 때이 접근법을 선호합니다. 여기 objective-c 블록을 선언 할 때 인스턴스 메서드를 참조 할 수 있습니까
는 내가 HTTP 요청은 내가 설정 전화를 할 수- (void)initFooAndDoStuff {
Foo *foo = [[Foo alloc] initWithCallback:^(NSData * response){
// do stuff
}];
}
//this is the instance method I'd like to invoke instead of an inline function
- (void)callBackWithHttpResponse:(NSData *)response {
// do stuff ... assuming it's more complex than a 1 liner that is
}
말할 수 후에 다시 내가 JSON을 구문 분석 할 수 호출 어떤 종류의 승/클래스를 초기화하기 ... 기본 설정입니다 다시 뭔가를 인라인 않는 (그러나 다시 더 복잡한 물건은 아마도 독립 실행 형 인스턴스 메소드에 좋을 것이다) 나는 다음과 같은 인스턴스 방법을 사용할 수 있습니다
Foo *foo = [[Foo alloc] initWithCallback:^(NSData * response){
NSLog(@"foo");
}];
하지만 w 조금 긴 느낌 inded. 어떤 식 으로든 이것을 잘라낼 수 있습니다.
Foo *foo = [[Foo alloc] initWithCallback:^(NSData * response){
[self callBackWithHttpResponse:response];
}];
왜 대리인을 사용하지 않습니까? –
나는 당신이하려는 것을 이해하지 못합니다. 하나의 블록을 선언하고 매번 다시 인라인 할 필요없이 반복해서 복사하거나 재사용하고 싶습니까? –
블록은 일반적으로 이전의 target-and-selector 기법보다 번거롭지 않습니다. 마지막 코드 스 니펫은 매우 간결하고 간단합니다. target-and-selector 접근법을 원한다면,'Foo'가 그렇게 작동하도록 설계하십시오. –