ARC语义问题:针对“的UIViewController”不可见@interface声明选择“loginResult:”
我已经很多关于谷歌上搜索上面的标题,但不能得到我想要的解决方案。 我有一个使用静态库进行服务调用的ARC项目。当单击登录按钮凭据传递给库并获得对Login视图Controller的响应时,这就是问题发生的地方。我无法将数据传递给发送请求的查看控制器。 这里是代码发生错误:ARC语义问题:针对“的UIViewController”不可见@interface声明选择“loginResult:”
- (void)loginResult:(LoginData *)logData {
[viewCtrl loginResult:logData]; ->No Visible @Interface for 'UIViewController' declares the selector 'loginResult:'
}
在.H(静态库类)
#import <UIKit/UIKIt.h>
@interface MobileWebMethods : NSObject {
UIViewController *viewCtrl;
}
@property (nonatomic, retain) UIViewController *viewCtrl;
- (void)loginResult:(LoginData *)logData;
试试这个,
objc_msgSend(viewCtrl, @selector(loginResult:),logData);
它显示我警告“隐含声明库函数”,但控制不传递给方法 – 2013-05-09 15:16:25
导入此库,#import
道歉,我没有注意到这是一个NSObject类,这里有一个逻辑错误,你在做什么。
您已经创建了一个类MobileWebMethods,它的类型是NSObject的,不是的UIViewController。你需要的是一个单独的viewController内导入此文件并创建它的一个实例:
MobileWebMethods *webMethods = [[MobileWebMethods alloc] init];
然后调用:
[webMethods loginResult: ... ];
是的,我已经声明,甚至没有任何案件不匹配 – 2013-05-09 14:40:34
请编辑您的答案,包括此定义/实施,其中viewCtrl被设定 – 2013-05-09 14:41:57
遗憾我错过了一件事,就是viewCtrl自定义视图控制器或者是它只是一个UIViewController ???,这不会有这种功能内置 – 2013-05-09 14:43:17
其实我发现你的代码非常混乱,您接口的类名为MobileWebMethods
我认为这是一种模式,在这种模式下,你有一个名为viewCtrl
的UIViewController属性,这是一个控制器,我很好奇,为什么你会这样做,而不是服从Modal-Controller-View的规则?我认为如果你创建一个UIViewController的子类并且在这个控制器里面你可以创建一个问题就可以解决一个名为MobileWebMethods
的财产模式会不会更好?
我只使用MVC,其中问题aaises从模型获取数据发送到控制器 – 2013-05-09 15:15:02
嗯,我认为发送数据到控制器不需要控制器在这种模式,这在我看来是非常罕见的。我的建议是,你可以在你的模式中声明一个类方法,如+(LoginResult *)loginResult:(LoginData *)data,在你的控制器中,你只需将数据传递给模态,就可以得到结果。这只是我的看法。 – 2013-05-09 15:29:09
好像'viewCtrl'只是一个'UIViewController'和未实现该方法'loginResult定制子类:'。你确定'viewCtrl'指向你的自定义类的一个实例吗?请分享更多的代码。 – s1m0n 2013-05-09 14:41:42
对此有任何更新,你有没有进展或计划添加所有的代码,以便我可以检查情况? – 2013-05-13 09:06:33