如何分享除AppDelegate类之外的类的对象

时间:2011-12-08 10:38:50

标签: iphone objective-c ios4 ios5

我知道我们可以通过这个

轻松地使用appDelegate类中声明的对象
myAppDelegate *alpha= (myAppDelegate *)[[UIApplication sharedApplication]delegate];

因此从上面我们可以使用alpha对象来获取myAppDelegate类中其他对象的值。

但假设我有一个A类并且我已经在其.h中声明了一个NSString * hello并在.m文件中合成它。

现在在B组中我创建了一个A类对象,即

A *classA = [[A alloc]init];
A.hello = [NSString stringWithFormat:@"Kawa banga"];
[classA release];

现在在C类中,我再次创建一个A类对象

 A *classA = [[A alloc] init];
NSLog(@"%@",classA.hello);

它给了我null。

如何在不同的类中获取hello对象的值。

2 个答案:

答案 0 :(得分:1)

您必须使用Singleton模式或将对象传递给所需的类。

我认为您需要查看Singleton Pattern

答案 1 :(得分:1)

当您将hello声明为类A的属性时,它是一个实例变量。这意味着它与您创建的A的每个实例(使用alloc& init)分开。

看起来您可能只想分享A的一个实例。一种简单的方法是将其添加为myAppDelegate类的属性。 (顺便说一句,Cocoa中的类名通常以大写字母开头,以区分变量名称)

完成后,您将能够通过以下方式访问它:

myAppDelegate *alpha = (myAppDelegate *)[[UIApplication sharedApplication]delegate];
myAppDelegate.classA.hello = @"hello, world";