0

您好,感谢您提前提供的任何帮助。我尝试搜索,但似乎我想做的事情并不常见。如果还有其他帖子谈论我的问题,请链接。

首先,我有两节课。为了简单起见,一个叫Controller,另一个叫我的AppDelegate。控制器是一个静态库。AppDelegate 使用以下内容创建控制器的实例。

*注意:我已经在 .h 文件中声明了 _controller。

_controller  = [[Controller alloc] initWithAppDelegate:self];

我想做的是从控制器调用 AppDelegate 类中的方法。controller.h 类中的相关代码如下。

@interface
{
  id _appDelegate;
}

-(id) initWithAppDelegate:(id)appDelegate;

在controller.m

-(void)someMethodName
{
  [_appDelegate method];
}

我遇到的问题是该方法无法调用。我可以调用其他几种方法,但不能调用我在 AppDelegate 中创建的自定义方法。我尝试用 AppDelegate 替换 ID,但我似乎无法导入 AppDelegate,我有点明白为什么我无法导入它。

我以这种方式创建项目的原因是我想在具有为不同设备设计的 UI 的应用程序中重用控制器代码。如果其中任何一个不清楚或您需要更多信息,请随时询问。

谢谢。

4

2 回答 2

0

在静态库中声明这样的协议:

@protocol AppDelegateRequiredMethods
@required
... methods here ...
@end

然后,将声明该协议的标头导入到您的各种 AppDelegate 实现中,并将您的应用委托声明为实现所述协议:

@interface MyAppDelegate:NSObject <AppDelegateRequiredMethods>
...
@end
于 2013-08-25T15:42:31.123 回答
0

控制器不知道应用程序委托或其方法。您必须使用协议声明接口。

@protocol AppDelegateMethods
- (void)method;
@end

//Then replace your current id with     
id <AppDelegateMethods>
于 2013-08-25T15:42:41.547 回答