2012-09-27 268 views
0

我是客观的c和xcode的新手,所以请原谅使用正确的技术术语的错误。全局变量

我做了一个新项目,并有一个appdelegate(.h和.m文件)。 在应用程序委托中,我有一些变量(设置)。其中一个变量是mainImage。 我把它放在appdelegate中,因为我希望它可以从任何视图控制器访问。

我添加了一个名为MainViewController(.h和.m文件)的视图控制器。 在我的MainViewController(.m)中我有一些自定义方法。 在viewDidLoad方法我有以下代码

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 
[currentImage setImage:appDelegate.mainImage]; 

问题:

在任一MainViewController,每当我想读“mainImage”我必须做的2行以上的方法。

在.m文件中是否有一个地方可以做一次,它在该文件的所有方法中都可用?

非常感谢, Prasad。

回答

0

@Malloc和@jack ...这是相当接近我needed..nevertheless什么,我有好几个properties..hence我结束,包括在头文件中的电话...

#define appDelegate ((MyAppDelegate *)[UIApplication sharedApplication].delegate) 

然后我打电话呼叫appDelegate.any_of_my_properties

从我的C#的经验,我知道,它可能是一个不好的做法,包括在应用程序委托一个全局变量和引用它这个way..however,这一个time..I认为它是有道理的,因为该对象实际上并不与任何特定的视图控制器(图像仅仅是一个例子)相关联..我有一些动态值持有者秒。

0

你可以在MainViewController中编写一个方法,使用这两行代码返回一个UIImage类型的对象,或者任何它,然后调用它。调用将类似于[self mainImage],方法签名将为- (UIImage *)mainImage

0

你可以把这两行的viewDidLoad方法你MainViewController作为例子:

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 
[currentImage setImage:appDelegate.mainImage]; 

这样做了一次,然后每次需要currentImage内容的时候,你只需要调用它:

UIImage *img= [[UIImage alloc]init]; 
img = self.currentImage; 

假设currentImage在MainViewController中声明为属性。