需要帮助来声明和实现一个带有块但没有参数的方法。 听起来很简单,但我错过了一些东西,因为这有效:
- (void) RetrieveDevices: (NSInteger)count
success:(void (^)(NSMutableArray *devices))success
failure:(void (^)(aylaError *err))failure;
- (void)RetrieveDevices:(NSInteger)count
success:(void (^)(NSMutableArray *devices))successBlock
failure:(void (^)(aylaError *err))failureBlock
{
}
这不会编译,因为它期待一个方法体:
- (void) RetrieveDevices
success:(void (^)(NSMutableArray *devices))success
failure:(void (^)(aylaError *err))failure;
- (void)RetrieveDevices
success:(void (^)(NSMutableArray *devices))successBlock
failure:(void (^)(aylaError *err))failureBlock
{
}
感谢帮助。
答案 0 :(得分:12)
块是参数。所以你想要一个带有两个参数的方法签名。 试试例如:
- (void) RetrieveDevicesWithSuccess:(void (^)(NSMutableArray *devices))success
failure:(void (^)(aylaError *err))failure;
答案 1 :(得分:1)
问题是“RetrieveDevices”和“success”/“failure”之间的换行符和空格。试试这个:
- (void)RetrieveDevicesOnSuccess:(void (^)(NSMutableArray *devices))successBlock
onFailure:(void (^)(aylaError *err))failureBlock
{
}
答案 2 :(得分:0)
您可以执行以下操作:
- (void) RetrieveDevicesSuccess:(void (^)(NSMutableArray *devices))success
failure:(void (^)(aylaError *err))failure;
答案 3 :(得分:0)
问题不在于块语法,而是第二个示例的方法声明语法。 没有参数的方法声明为:
- (RETURN_TYPE)method_name
并将带参数的方法声明为:
- (RETURN_TYPE)method_name_part1:(PARAMETER_TYPE1)parameter1 name_part2:(PARAMETER_TYPE2)parameter2...
第一个示例具有正确的语法,具有void返回类型和三个参数,第二个示例在方法名称后面有一个空格,这就是编译器期望该方法的主体(他将其解释为no)的原因参数方法)。
另请注意,按照惯例,方法名称以小写字母开头。