Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 这个变量应该手动释放吗?_Iphone_Objective C - Fatal编程技术网

Iphone 这个变量应该手动释放吗?

Iphone 这个变量应该手动释放吗?,iphone,objective-c,Iphone,Objective C,内存需要释放以便分配、保留和复制。我的问题是在以下情况下,我保留UIImage属性,但它是由imagedNamed函数自动释放的。我还应该释放以下变量吗 @property (nonatomic, retain) UIImage *image; self.image = [UIImage imageNamed:@"image.png"]; 谢谢 是的,您必须释放映像,因为您保留了它。在代码中,您不使用属性,而是直接将自动释放的UIImage对象分配给iVar,因此您需要 保留您的图像(或者更好

内存需要释放以便分配、保留和复制。我的问题是在以下情况下,我保留UIImage属性,但它是由imagedNamed函数自动释放的。我还应该释放以下变量吗

@property (nonatomic, retain) UIImage *image;
self.image = [UIImage imageNamed:@"image.png"];

谢谢

是的,您必须释放映像,因为您保留了它。

在代码中,您不使用属性,而是直接将自动释放的UIImage对象分配给iVar,因此您需要

  • 保留您的图像(或者更好地实际使用属性)-否则,当您退出当前作用域时,您的图像对象将被销毁,并且使用其他方法访问它将导致错误。因此,请使用:

    self.image = [UIImage imageNamed:@"image.png"];
    
  • 用dealloc方法释放图像


  • 但他正在访问ivar,而不是财产。所以不叫保留,对。它是一个自动释放对象。您需要担心只释放那些您分配或保留的对象。在您的示例中,如果您说self.image=[UIImage ImageName:@“image.png”];然后,当它的属性被访问时,它会被保留。如果你没有像你的例子中那样说self.image,你就没有保留它。仍然需要做self.image=nil和[image release]。所有保留的属性都必须在解除锁定中释放。@jini:不必在解除锁定中同时执行
    self.image=nil
    [image release]
    。第一个会使第二个变得不相关。是的,但是如果你这样做,那么
    image
    就是零<代码>[nil release]完全不起作用。因此,doing
    self.image=nil;[图片发布]
    self.image=nil完全相同对不起。键入self.image时出错。我猜您编辑此文件是为了解决此问题。下面的答案毫无意义。这使得其他人很难跟随和学习。你的原始代码是这样的吗<代码>[self image]=[UIImage ImageName:@“image.png”]