Objective c 我可以为此创建一个全局变量吗?

Objective c 我可以为此创建一个全局变量吗?,objective-c,Objective C,我在一个编辑图像的方法中声明了这一点,这个方法可以被几个按钮调用 我是否可以全局声明此变量,使其始终保存UIView中加载的第一个图像?然后,我可以使用一个复制变量来进行所有编辑,例如 // This is the line which retrieves the current image on the UIView CGImageRef originalImage = imageView.image.CGImage; 我试图通过在头文件中声明它并在方法文件中实例化它来使它成为全局变量,但是

我在一个编辑图像的方法中声明了这一点,这个方法可以被几个按钮调用

我是否可以全局声明此变量,使其始终保存UIView中加载的第一个图像?然后,我可以使用一个复制变量来进行所有编辑,例如

// This is the line which retrieves the current image on the UIView
CGImageRef originalImage = imageView.image.CGImage;
我试图通过在头文件中声明它并在方法文件中实例化它来使它成为全局变量,但是当我尝试在另一个方法中访问全局变量时,它就好像没有被设置为全局变量一样


如果您有任何建议或更好的解决方案,我们将不胜感激。

您想做什么并不完全清楚,但我想指出的是:

任务

CGImageRef copyImage = originalImage;
不会创建图像的副本;它只会给你一个局部变量,指向与原始图像相同的图像;如果修改copyImage,则还可以修改原始图像

如果要制作CGImage的副本,以便在保证原始图像安全的情况下自由修改,请使用:

          CGImageRef copyImage = originalImage;
如果要将原始图像保存为第2点下的图像,只需向类中添加一个属性,并在CGImage就位后立即初始化它,例如,在viewDidLoad中:

self.originalImage将是您的原始图像,同时您可以自由修改imageView.image.CGImage

不要忘记在dealloc方法中释放复制的图像


希望这有帮助。

您是否在头文件中设置了@property,如@属性非原子,强CGImageRef原始图像;这确实有帮助,但是我之前用Java编写的范围有问题,所以objective c有些不同。我似乎无法创建originalImage的全局变量,以便方法中的copyImage可以访问originalImage,如您所述。我尝试创建CGImageRef的属性,但它带来了一个错误。我甚至尝试通过使类变为静态来使其成为类变量,但这似乎是不受欢迎的,而且无论如何也无法解决我的问题;一个普通的班级成员就可以了。发布你的代码来定义属性和你得到的错误…我正在尝试-@property nonatomic,retain CGImageRef originalImage;错误-具有retain或strong属性的属性必须是对象类型。用法:@property NONAMATIC,assign-in dealloc:CGIMAGEREFRELEASELF.originalImage;-请确保不要在不释放当前值的情况下重写变量,否则会泄漏内存。它似乎正在编译,我将测试如果按下还原按钮,是否可以显示原始图像。我有弧线,这意味着我不能释放对象,这是明智的吗?或者我应该关闭它,自己管理内存?
      CGImageRef img1 = CGImageCreateCopy(img2);
       -(void) viewDidLoad {
           ...
           self.originalImage = CGImageCreateCopy(imageView.image.CGImage);
           ...
       }