ReactiveCocoa Objective-C 버전 ReactiveObjC을 학습하고 있습니다. 다음 코드를 들어 Objective-C 블록 매개 변수 문제점 :이 블록 선언이 프로토 타입이 아닙니다.
:RACSignal.h
에서,
(id _Nullable (^)())
엑스 코드
- (RACSignal *)reduceEach:(id _Nullable (^)())reduceBlock RAC_WARN_UNUSED_RESULT;
는 오류를보고합니다
This block declaration is not a prototype
여러 매개 변수는 reduceBlock()
에 넣어 수 있습니다. 코드를 다음과 같이 : UIAlertView+RACSignalSupport.m
에서, 그리고 다른, 일종의 일반적인
- (RACSignal *)rac_buttonClickedSignal {
RACSignal *signal = [[[[self.rac_delegateProxy
signalForSelector:@selector(alertView:clickedButtonAtIndex:)]
reduceEach:^(UIAlertView *alertView, NSNumber *buttonIndex){
return buttonIndex;
}]
......
return signal;
}
. 나는 블록에 0 개 이상의 매개 변수를 넣을 수 있다고 생각하며 void (^block)()
을 선언했습니다.
구문은 Xcode에서 지원되지 않습니다. 나는 그것을 해결하는 방법과 그 이유를 알고 싶다.
많은 분들께 미리 감사드립니다.
그것을 해결거야, 대답은 그런 식으로'(ID _Nullable (^) (ID _Nullable입니다, ...))'그것은 쉽지 않습니다. * (id _Nullable (^)()) *, 여러 번 구문을 보았습니다. – dengApro
@ dengApro 시도해 보셨습니까? 최근 버전에서는 Xcode의 Clang에 대한 기본 경고 설정이 더 엄격 해졌습니다. paren에'void '를 넣는 것은 정말로 그것을 고쳐야합니다. –
나는 시험해 보았다. ** reduceEach : (id _Nullable (^) (void)) reduceBlock ** 그리고 func ** reduceEach를 죽입니다 :^(UIAlertView * alertView, NSNumber * buttonIndex) {** – dengApro