我想要一个数组,从一个类中获取数据,以便在具有相同数据的另一个类中使用 如果我们在applicationDelegate类上声明一个数组 然后在两个类中声明applicationDelegate的对象 并将数组从一个类分配到appDelegate.array中,我是否可以在类中获取数组?
答案 0 :(得分:2)
您可以控制对象的实例化时间和方式。如果您创建依赖类的实例,那么对于多个类来说,访问相同数据,切换数据或获取数据的方法非常重要。
一个例子,给定WVParent类和WVChild。
WVParent有一个属性someArray,它是你的其他对象需要的数组:
@interface WVParent : NSObject {
NSArray *someArray
}
@property (nonatomic, retain) NSArray *someArray;
@end
然后你有WVChild,它本身有一个名为parentObject的属性:
@class WVParent;
@interface WVChild : NSObject {
WVParent *parentObject;
}
@property (nonatomic, assign) WVParent *parentObject;
@end
假设父实例正在创建子实例,您将分配它并分配父实例:
WVChild *child = [[WVChild alloc] init];
child.parentObject = self;
然后子实例可以通过以下方式访问someArray:
self.parentObject.someArray
这只是一个选择。您也可以将数组本身传递给子节点,假设数据是静态的,并且在应用程序会话过程中不太可能发生变化。
这样,它不会在App Delegate中的某个地方生成数据源,而是存在于更适合其创建,维护和出售的类中。如果你有一个流行的类,并且只能通过获取应用程序委托来访问你应用程序的其余部分,那么你可能需要更多地考虑一下你的架构。
有关依赖注入的更多内容:
答案 1 :(得分:1)
是的,您可以在applicationDelegate
课程中声明成员/属性,但您应该尝试遵循单一责任原则,并确保最终不会在您的应用代表中填充大量杂项共享内容(iPhone代码会发生很多事情)。
另一种选择是在创建对象时将数组注入到对象的构造函数中。
在设计方面很难知道最佳解决方案,而不知道这些数据是什么以及它真正属于何处。