gpt4 book ai didi

iOS Storyboard和注入(inject)属性

转载 作者:行者123 更新时间:2023-12-01 16:57:33 25 4
gpt4 key购买 nike

我将 iOS 5 Storyboard用于 View 控制层次结构。这样做的问题是我有一些共享 Controller 类来处理我需要注入(inject)到 View Controller 的业务逻辑。这些 Controller 被初始化并保存在应用程序委托(delegate)中。

例如,我有一个 Controller ,它封装了我在一些 View Controller 中使用的 Dropbox 交互。我可以通过每个 prepareForSegue:sender: 传递引用。但这使得整个 View Controller 层次结构依赖于 Controller 。另外,我可以使用单例模式,但我并不是它的忠实粉丝。

如果我希望 Controller 松散耦合,我有什么选择?我听说过异议,我会对此进行调查,但非常欢迎任何意见

最佳答案

我知道这有点晚了,但希望它可以帮助其他人。

我使用协议(protocol)解决了这个问题,并检查要注入(inject)的对象是否响应某些选择器。

prepareForSegue方法我做两件事之一:

id object = segue.destinationController;
if([object conformsToProtocol:@protocol(HasApplicationManager) ]){
[(id<HasApplicationManager>)object setApplicationManager:_applicationManager];
}
if([object respondsToSelector:@selector(setViewDelegate:)]){
[object performSelector:@selector(setViewDelegate:)withObject:self];
}

第一个位检查目标 Controller 是否符合指定的协议(protocol),这仍然是松散耦合的,因为您使用组合模式构建应用程序。

其次,我检查了一个选择器,这比协议(protocol)更非正式,并且可能更耦合并带来更多问题。但这是一种绕过数百个“IHave...”协议(protocol)的方法。

关于iOS Storyboard和注入(inject)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10395878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com