0

我是 Objective 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 文件中是否有一个地方可以一次性完成,并且在该文件的所有方法中都可用?

提前非常感谢,普拉萨德。

4

3 回答 3

0

您可以将这两行放在您MainViewController的示例的 viewDidLoad 方法中:

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

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

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

假设 currentImage 被声明为MainViewController.

于 2012-09-27T19:12:09.183 回答
0

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

于 2012-09-27T18:32:58.983 回答
0

@Malloc 和@jack ......这非常接近我所需要的......尽管如此,我有很多属性......因此我结束了在头文件中包含调用......

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

然后我打电话给 appDelegate.any_of_my_properties

根据我的 C# 经验,我知道在应用程序委托中包含全局变量并以这种方式引用它可能是一种不好的做法..但是,这一次..我认为这是有道理的..考虑到对象确实没有绑定到现实中的任何特定视图控制器(图像只是一个例子)......我有一些动态价值持有者。

于 2012-09-27T19:27:15.700 回答