5

需要帮助声明和实现带有块但没有参数的方法。听起来很简单,但我错过了一些东西,因为这有效:

- (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
{

}

感谢帮助。

4

4 回答 4

12

块是参数。所以你想要一个带有两个参数的方法签名。尝试例如:

- (void) RetrieveDevicesWithSuccess:(void (^)(NSMutableArray *devices))success
                            failure:(void (^)(aylaError *err))failure;
于 2012-07-12T22:20:51.670 回答
1

问题是“RetrieveDevices”和“success”/“failure”之间的换行符和空格。试试这个:

- (void)RetrieveDevicesOnSuccess:(void (^)(NSMutableArray *devices))successBlock
                       onFailure:(void (^)(aylaError *err))failureBlock
{

}
于 2012-07-12T22:21:00.960 回答
0

您可以执行以下操作:

- (void) RetrieveDevicesSuccess:(void (^)(NSMutableArray *devices))success
                        failure:(void (^)(aylaError *err))failure;
于 2012-07-12T22:21:03.120 回答
0

问题不在于块语法,而在于第二个示例的方法声明语法。没有参数的方法声明为:

- (RETURN_TYPE)method_name

一个带参数的方法被声明为:

- (RETURN_TYPE)method_name_part1:(PARAMETER_TYPE1)parameter1 name_part2:(PARAMETER_TYPE2)parameter2...

第一个示例具有正确的语法,返回类型为 void 和三个参数,第二个示例在方法名称后有一个空格,这就是编译器期望方法体的原因(他将其解释为无参数方法) .

另请注意,按照惯例,方法名称以小写字母开头。

于 2012-07-12T22:27:28.897 回答