【问题标题】:How to share the object of a class apart from AppDelegate class除了 AppDelegate 类之外,如何共享一个类的对象
【发布时间】:2011-12-08 19:30:06
【问题描述】:

我知道我们可以通过这样做轻松使用 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);

它给了我空值。

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

【问题讨论】:

  • 那个A类是UIViewCOntroller类
  • 好的没关系,它可以存储带有关联键的id类型对象。这里的键由你提供,就像NSDictionary一样。

标签: iphone objective-c ios4 ios5


【解决方案1】:

当您将hello 声明为A 类的属性时,它是一个实例变量。这意味着它对于您创建的每个A 实例都是独立的(使用allocinit)。

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

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

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

【讨论】:

    【解决方案2】:

    您要么必须使用单例模式,要么将对象传递给所需的类。

    我认为你需要通过Singleton Pattern

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      相关资源
      最近更新 更多