AppDelegate中声明的变量是否可供所有其他类访问?

时间:2011-07-26 12:54:54

标签: iphone objective-c cocoa-touch ios4 delegates

Xcode中给出了AppDelegates方法的特别之处? 我的应用程序中有很多课程。现在我想要的是我有AudioStreamer类,我必须在大多数其他类中使用该类...而且我想只有一个AudioStreamer类的实例。这样就很容易处理一个对象。 在AudioStreamer文件中声明AppDelegate类并仅在该文件中创建实例是否可行...我可以在所有其他类中访问该变量。???

3 个答案:

答案 0 :(得分:3)

我建议使用singleton,以便所有客户只创建和共享一个实例。

我建议Matt Galaghers发布关于单身人士及其可下载的SynthesizeSingleton.h的信息:

http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html

答案 1 :(得分:2)

您可以使用非常方便的GCD(Grand Central Dispatch)功能在这些线路上实现Singleton行为 -

+ (AudioStreamer*) defaultStreamer {
    static AudioStreamer* defaultStreamer = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        defaultStreamer = [[AudioStreamer alloc] init];
    });
    return defaultStreamer; 
} 

答案 2 :(得分:1)

您也可以通过这样的app app访问appDelegate中声明为属性的对象。

myFirstAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
myStr=[appDelegate.mainArray objectAtIndex:1];

在上面的例子中,我展示了如何访问我在appDelegate类中声明和保留的数组。通过这种方式,您可以访问您想要的任何对象,这些对象被声明为属性,通过您的应用程序。希望这会有所帮助。