diff --git a/ReactiveObjC/RACSequence.h b/ReactiveObjC/RACSequence.h index e807a05d3..c7bc6b9a9 100644 --- a/ReactiveObjC/RACSequence.h +++ b/ReactiveObjC/RACSequence.h @@ -259,7 +259,7 @@ typedef RACSequence * _Nullable (^RACSequenceBindBlock)(ValueType _Nullable valu /// return value must be an object. This argument cannot be nil. /// /// Returns a new sequence of reduced tuple values. -- (RACSequence *)reduceEach:(id _Nullable (^)())reduceBlock; +- (RACSequence *)reduceEach:(RACReduceBlock)reduceBlock; /// Returns a sequence consisting of `value`, followed by the values in the /// receiver. @@ -309,7 +309,7 @@ typedef RACSequence * _Nullable (^RACSequenceBindBlock)(ValueType _Nullable valu /// /// Returns a new sequence containing the results from each invocation of /// `reduceBlock`. -+ (RACSequence *)zip:(id)sequences reduce:(id _Nullable (^)())reduceBlock; ++ (RACSequence *)zip:(id)sequences reduce:(RACReduceBlock)reduceBlock; /// Returns a sequence obtained by concatenating `sequences` in order. + (RACSequence *)concat:(id)sequences; diff --git a/ReactiveObjC/RACSignal+Operations.h b/ReactiveObjC/RACSignal+Operations.h index d2e178264..3c9ef0460 100644 --- a/ReactiveObjC/RACSignal+Operations.h +++ b/ReactiveObjC/RACSignal+Operations.h @@ -197,7 +197,8 @@ extern const NSInteger RACSignalErrorNoMatchingCase; /// /// Returns a signal which sends the results from each invocation of /// `reduceBlock`. -+ (RACSignal *)combineLatest:(id)signals reduce:(ValueType _Nullable (^)())reduceBlock RAC_WARN_UNUSED_RESULT; ++ (RACSignal *)combineLatest:(id)signals reduce:(RACGenericReduceBlock)reduceBlock RAC_WARN_UNUSED_RESULT; + /// Merges the receiver and the given signal with `+merge:` and returns the /// resulting signal. diff --git a/ReactiveObjC/RACSignal+Operations.m b/ReactiveObjC/RACSignal+Operations.m index ec250a490..dbc4df773 100644 --- a/ReactiveObjC/RACSignal+Operations.m +++ b/ReactiveObjC/RACSignal+Operations.m @@ -456,7 +456,7 @@ + (RACSignal *)combineLatest:(id)signals { }] setNameWithFormat:@"+combineLatest: %@", signals]; } -+ (RACSignal *)combineLatest:(id)signals reduce:(id (^)())reduceBlock { ++ (RACSignal *)combineLatest:(id)signals reduce:(RACGenericReduceBlock)reduceBlock { NSCParameterAssert(reduceBlock != nil); RACSignal *result = [self combineLatest:signals]; diff --git a/ReactiveObjC/RACSignal.h b/ReactiveObjC/RACSignal.h index 6fb5e03fe..1d4670e70 100644 --- a/ReactiveObjC/RACSignal.h +++ b/ReactiveObjC/RACSignal.h @@ -218,7 +218,7 @@ typedef RACSignal * _Nullable (^RACSignalBindBlock)(ValueType _Nullable value, B /// return value must be an object. This argument cannot be nil. /// /// Returns a new signal of reduced tuple values. -- (RACSignal *)reduceEach:(id _Nullable (^)())reduceBlock RAC_WARN_UNUSED_RESULT; +- (RACSignal *)reduceEach:(RACReduceBlock)reduceBlock RAC_WARN_UNUSED_RESULT; /// Returns a signal consisting of `value`, followed by the values in the /// receiver. @@ -268,7 +268,7 @@ typedef RACSignal * _Nullable (^RACSignalBindBlock)(ValueType _Nullable value, B /// /// Returns a new signal containing the results from each invocation of /// `reduceBlock`. -+ (RACSignal *)zip:(id)signals reduce:(id _Nullable (^)())reduceBlock RAC_WARN_UNUSED_RESULT; ++ (RACSignal *)zip:(id)signals reduce:(RACGenericReduceBlock)reduceBlock RAC_WARN_UNUSED_RESULT; /// Returns a signal obtained by concatenating `signals` in order. + (RACSignal *)concat:(id)signals RAC_WARN_UNUSED_RESULT; diff --git a/ReactiveObjC/RACStream.h b/ReactiveObjC/RACStream.h index 0ae04de17..b397d18b4 100644 --- a/ReactiveObjC/RACStream.h +++ b/ReactiveObjC/RACStream.h @@ -21,6 +21,12 @@ NS_ASSUME_NONNULL_BEGIN /// to be overridden. @interface RACStream<__covariant ValueType> : NSObject +_Pragma("clang diagnostic push") \ +_Pragma("clang diagnostic ignored \"-Wstrict-prototypes\"") \ +typedef id _Nonnull (^RACReduceBlock)(); +typedef ValueType _Nonnull (^RACGenericReduceBlock)(); +_Pragma("clang diagnostic pop") + /// Returns an empty stream. + (__kindof RACStream *)empty; @@ -170,7 +176,7 @@ typedef RACStream * _Nullable (^RACStreamBindBlock)(ValueType _Nullable value, B /// return value must be an object. This argument cannot be nil. /// /// Returns a new stream of reduced tuple values. -- (__kindof RACStream *)reduceEach:(id _Nullable (^)())reduceBlock; +- (__kindof RACStream *)reduceEach:(RACReduceBlock)reduceBlock; /// Returns a stream consisting of `value`, followed by the values in the /// receiver. @@ -221,7 +227,7 @@ typedef RACStream * _Nullable (^RACStreamBindBlock)(ValueType _Nullable value, B /// /// Returns a new stream containing the results from each invocation of /// `reduceBlock`. -+ (__kindof RACStream *)zip:(id)streams reduce:(id _Nullable (^)())reduceBlock; ++ (__kindof RACStream *)zip:(id)streams reduce:(RACGenericReduceBlock)reduceBlock; /// Returns a stream obtained by concatenating `streams` in order. + (__kindof RACStream *)concat:(id)streams; diff --git a/ReactiveObjC/RACStream.m b/ReactiveObjC/RACStream.m index c362eb847..431b6c6b9 100644 --- a/ReactiveObjC/RACStream.m +++ b/ReactiveObjC/RACStream.m @@ -139,7 +139,7 @@ - (__kindof RACStream *)ignore:(id)value { }] setNameWithFormat:@"[%@] -ignore: %@", self.name, RACDescription(value)]; } -- (__kindof RACStream *)reduceEach:(id (^)())reduceBlock { +- (__kindof RACStream *)reduceEach:(RACReduceBlock)reduceBlock { NSCParameterAssert(reduceBlock != nil); __weak RACStream *stream __attribute__((unused)) = self; @@ -234,7 +234,7 @@ + (__kindof RACStream *)zip:(id)streams { }] setNameWithFormat:@"+zip: %@", streams]; } -+ (__kindof RACStream *)zip:(id)streams reduce:(id (^)())reduceBlock { ++ (__kindof RACStream *)zip:(id)streams reduce:(RACGenericReduceBlock)reduceBlock { NSCParameterAssert(reduceBlock != nil); RACStream *result = [self zip:streams]; diff --git a/ReactiveObjC/extobjc/EXTScope.h b/ReactiveObjC/extobjc/EXTScope.h index 4a16f4ae9..8456e8339 100644 --- a/ReactiveObjC/extobjc/EXTScope.h +++ b/ReactiveObjC/extobjc/EXTScope.h @@ -88,7 +88,7 @@ _Pragma("clang diagnostic pop") /*** implementation details follow ***/ -typedef void (^rac_cleanupBlock_t)(); +typedef void (^rac_cleanupBlock_t)(void); static inline void rac_executeCleanupBlock (__strong rac_cleanupBlock_t *block) { (*block)();