4

对目标 C 非常新鲜,无法弄清楚我错过了什么。

.h 文件

#import <Foundation/Foundation.h>
#import "RESTResponse.h"
typedef void (^Callback)(RESTResponse*);

@interface AquaUser : NSObject

....

-(void)Login:Callback;
-(void)Register:Callback;


@end

.m 文件

-(void)Login:(Callback) handler
{
...
 RESTResponse *result = [RESTResponse new];
         result.sucesss = true  ;
         result.response = @"Login succesfull";
         handler(result);
...
}

在 .mi 中收到有关登录声明的警告,并在“登录:”的实现中注册冲突的参数类型:“_ strong id”与“ _strong 回调”(又名“void (^ _strong)(RESTResponse * _strong)”)

尽管代码可以编译并且可以工作,但我还是想在这里吸取教训。帮助表示赞赏。

4

2 回答 2

17

看起来您缺少 .h 文件中的类型。

@interface AquaUser : NSObject

....

-(void)Login:(Callback)handler;
-(void)Register:(Callback)handler;


@end

编辑:

顺便说一句,在目标 c 中,最好让您的方法以小写字符开头。没什么大不了的,但这是常见的做法。

于 2013-02-20T22:31:50.180 回答
1

Happens also if you don't #import class that is declaring used Type in your .h file and use @class instead. @class doesn't work in this case. I had an enum defined in class I only mentioned with @class and wrote function that uses that enum in .h of my other class. Switching to #import worked.

于 2016-01-20T12:43:27.980 回答