我习惯从外面为我的对象提供依赖项。 Interface Builder是一个帮助实现此目的的工具,但我无法使用多个笔尖。一旦我将主笔尖分成更多文件,我就不能再在不同笔尖中的对象之间建立连接。使用文件所有者并没有多大帮助,因为它只允许我将一个对象传递给一个笔尖。
示例:
这里A和B是一些更高级别的对象,C和D是某种更低级别的服务。只要所有物体都在一个大笔尖内(第一张图片),一切都很好。但是当我将笔尖分开分开A和B时,我很难将它们连接到C和D.(显然我不想创建C和D的两个实例,我希望A和B都能说同一个C和D不使用单身人士。)
是否可以在Interface Builder中执行此操作?怎么样?
答案 0 :(得分:2)
.nib中的对象对应于您的视图层,对吗?取消归档时,它们由您选择的控制器拥有,该控制器在您的服务和您的视图之间进行调解。
在.nib文件中存档任何类型的低级服务或任何类型的依赖都是非常规的。
答案 1 :(得分:1)
您应该使用外部对象。在你的xib中添加外部对象。您可以在对象库中找到它。将它用作普通物体(插座等)。由于有一个外部对象,它不会通过unarchiving过程创建,你应该自己创建。然后以编程方式加载您的笔尖:
NSArray* topLevelObjs = nil;
NSDictionary* proxies = [NSDictionary dictionaryWithObject:self forKey:@"AppDelegate"];
NSDictionary* options = [NSDictionary dictionaryWithObject:proxies forKey:UINibExternalObjects];
topLevelObjs = [[NSBundle mainBundle] loadNibNamed:@"Main" owner:self options:options];