在不调用ViewDidLoad的情况下从另一个类访问方法或属性?

时间:2011-11-20 22:51:49

标签: ios class methods properties

通常,我会调用另一个类方法: MyClass * class = [[MyClass alloc] init]; [class myMethod];

但问题是,它会调用ViewDidLoad。这对我来说是一个问题。

有没有办法在不调用ViewDidLoad的情况下在另一个方法中访问属性或在另一个方法中调用类?

谢谢!

Edit1 :你是说如果我这样做就不会打电话给我的VDL?:

MyClassB *classB = [[[MyClassB alloc] init] autorelease];
[classB.pauseButton setHidden:NO];

当我调用方法时会触发ViewDidLoad怎么样?

2 个答案:

答案 0 :(得分:2)

不确定;重构myMethod调用viewDidLoad

也就是说,如果您调用方法a而方法a调用b,但您不想调用b,那么您需要修改实现a有时不会调用b。通过修改a或在包含c但未调用a的类上创建新方法b

如果问题是你在系统框架中调用一个方法,并且在你不想要的时候调用viewDidLoad,那么答案就是你真的不能做你想做的事情做。但这只是一种症状;真正的答案是需要重新审视您的应用程序架构,以更好地适应系统的框架。


  

Edit1:所以你说如果我这样做就不会打电话给我   VDL:

MyClassB *classB = [[[MyClassB alloc] init] autorelease];

那就是创建MyClassB的新实例。如果屏幕上已经显示了一个实例,那么您很可能不需要新实例,是的,这就是调用viewDidLoad的原因。

创建一个实例变量,该变量可以指向已存在的classB实例,或者具有抓取该实例的方法;将它挂在应用代表或其他东西上。

总的来说,听起来您对实例化对象意味着什么只是简单地引用一个以及如何适应UIKit应用程序创建模型感到困惑。在你掌握它之前,它有点棘手。研究一些展示如何使用视图控制器的示例,因为它们可能已经解决了类似的问题。

答案 1 :(得分:0)

您可以创建一次视图控制器并将其保存在实例变量中,然后使用实例变量来调用方法或访问属性。

eg.
if(self.myClass==nil)
  self.myClass =  [[MyClass alloc] init];

[self.myClass doStuff];
[self.myClass.pauseButton setHidden:NO];