Iphone 两个视图控制器可以互为代理吗?
我在学习objective-c和cocoa touch的同时也在开发一个应用程序,所以我有一个相当简单的问题(我想),对不起,我在网站上没有足够的布朗尼点数来显示我网站的视觉图表 但让我解释一下,我有以下几点Iphone 两个视图控制器可以互为代理吗?,iphone,objective-c,xcode,delegates,Iphone,Objective C,Xcode,Delegates,我在学习objective-c和cocoa touch的同时也在开发一个应用程序,所以我有一个相当简单的问题(我想),对不起,我在网站上没有足够的布朗尼点数来显示我网站的视觉图表 但让我解释一下,我有以下几点 主视图控制器 视图控制器A 视图控制器B 视图控制器C 视图控制器1 视图控制器2 ViewController A、B和C都有主ViewController正在使用的协议委托。 ViewController 1和2具有ViewController C正在使用的协议委托 但是,我还需要
- 主视图控制器
- 视图控制器A
- 视图控制器B
- 视图控制器C
- 视图控制器1
- 视图控制器2
ViewController 1和2具有ViewController C正在使用的协议委托 但是,我还需要ViewController C作为主ViewController的代理。 因此,我最近在主ViewController中创建了一个协议委托,但是当尝试将ViewController C指定为委托时,我会遇到错误,尤其是当尝试将主ViewController的头文件导入到View Controller C时,我会收到一条编译失败的消息,原因如下
- 主ViewController头文件可以 找不到的协议 视图控制器C
- 应为说明符限定符列表 在“ViewController C”之前
非常感谢,我真的很欣赏这个网站一段时间了这闻起来像是糟糕的应用程序设计。但要解决编译错误,只需执行以下操作:
@protocol SomeDelegate;
@interface FooThatUsesSomeDelegate : NSObject {
id<SomeDelegate> delegate_;
}
@end
@protocol SomeDelegate;
@接口FooThatUsesSomeDelegate:NSObject{
身份证代表;
}
@结束
通过向前声明SomeDelegate
,您不必在其完全声明的位置包含头文件。这对于两个类相互依赖的情况非常有用
您必须在实现源文件中包含头文件。但这通常不是问题。注意它们可以是(作为St3fan)描述,但这正是为什么总是在不保留引用的情况下分配代理,因为否则每个代理都会阻止另一个代理被解除分配。对于ARC,您现在为代理使用弱引用:
@property(weak)id<MyDelegateProtocol> *delegate;
@property(弱)id*委托;
当另一个视图控制器被取消分配时,引用变为零,您不需要手动跟踪其他对象的生命周期。这太好了,谢谢。我将阅读转发声明。现在脱离主题,我不希望在我的应用程序设计中有任何详细的答案,但只是为了澄清我正在构建一个简单的游戏,主视图控制器er正在交换初始屏幕和标题屏幕,视图控制器C是游戏视图本身,游戏视图包含多个视图。因此视图控制器C游戏视图将包含一系列与主视图控制器无关的var和方法,如果可能的话,您能简单地提出一个更有效的模型吗?我认为它是w还不错,但我现在有点担心!我仍然需要了解如何使用委托,我非常理解这个理论,但我也意识到我并不需要这个解决方案,因为我可以在ViewController C中创建一个委托方法,返回到主ViewController来做我想做的事情。再次感谢,学到一些新东西仍然很好