Iphone 如何在两个类之间共享数组?

Iphone 如何在两个类之间共享数组?,iphone,cocoa-touch,Iphone,Cocoa Touch,我希望从一个类获取数据的数组在另一个具有相同数据的类中可用。 如果我们在ApplicationLegate类上声明一个数组。 然后在两个类中声明ApplicationLegate的对象。 然后将数组从一个类分配到appDelegate.array中,我是否能够跨类获取数组?是的,您可以在ApplicationLegate类上声明一个成员/属性,尽管你应该试着遵循单一责任原则,并确保你不会在你的应用程序委托中塞进很多杂七杂八的共享内容(这在iPhone代码中经常发生) 另一种选择是在创建对象的构造

我希望从一个类获取数据的数组在另一个具有相同数据的类中可用。
如果我们在ApplicationLegate类上声明一个数组。
然后在两个类中声明ApplicationLegate的对象。

然后将数组从一个类分配到appDelegate.array中,我是否能够跨类获取数组?

是的,您可以在
ApplicationLegate
类上声明一个成员/属性,尽管你应该试着遵循单一责任原则,并确保你不会在你的应用程序委托中塞进很多杂七杂八的共享内容(这在iPhone代码中经常发生)

另一种选择是在创建对象的构造函数时将数组注入其中


如果不知道这些数据是什么以及它们真正属于哪里,就很难知道设计方面的最佳解决方案。

我支持Mike。将应用程序代理排除在外

您可以控制对象的实例化时间和方式。如果一个以上的类访问同一数据很重要,那么在创建依赖类的实例时,传递数据或获取数据的方法

例如,给定类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委托中的某个地方有一个数据源,而是位于一个类中,更适合于负责其创建、维护和销售。如果你有一个类突然出现,并且只能通过获得app委托来访问你的应用程序的其余部分,那么你可能需要在你的架构中多考虑一些

有关依赖项注入的更多信息,请参见:


我在孩子身上看到“失踪”;parentObject:self;我真傻。:应该是一个=符号。固定的。