Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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_Iphone Sdk 3.0 - Fatal编程技术网

IPHONE:关于释放变量的问题

IPHONE:关于释放变量的问题,iphone,iphone-sdk-3.0,Iphone,Iphone Sdk 3.0,考虑以下伪代码: // an image is initialized UIImage *imagePX = [[UIImage alloc]initWithContentsOfFile:... bla bla imagePX = [self rotateImage:imagePX]; //A [self doStuff:imagePX]; //B 然后我有rotateImage方法: - (UIImage*) rotateImage:(UIImage*)source { ... rot

考虑以下伪代码:

// an image is initialized
UIImage *imagePX = [[UIImage alloc]initWithContentsOfFile:... bla bla

imagePX = [self rotateImage:imagePX]; //A
[self doStuff:imagePX]; //B
然后我有rotateImage方法:

- (UIImage*) rotateImage:(UIImage*)source {
  ... rotate the image... draw on context...
  [source drawInRect... bla bla
  ...

  UIImage *rotatedImage =  UIGraphicsGetImageFromCurrentImageContext();

  return rotatedImage;
}
我的问题是:imagePX从未发布过。当图像被传递到RotateImage方法时,我想我可以在[source drawInRect…]命令上使用它后简单地释放它,因为我会在该方法上返回一个RotateImage,但是如果我这样做,程序将崩溃,因为变量imagePX应该存在,所以行a可以计算

我的另一个问题是图像将在B上转发到另一个例程。那么,在不丢失imagePX和泄漏的情况下,让它工作的最佳方法是什么

最好的方法是什么?

而不是

[[UIImage alloc]initWithContentsOfFile:... bla bla
使用

后者将自动释放。

而不是

[[UIImage alloc]initWithContentsOfFile:... bla bla
使用


后者将自动释放。

关于[UIImage ImageName:@”“]的情况如何?无需分配,无需发布)

关于[UIImage ImageName:@”“]的情况如何?无需分配,无需释放)

无需分配UIImage的实例
imageWithContentsOfFile
是一个静态方法,可以在类本身上调用

由于
imageWithContentsOfFile
不包括术语
alloc
new
copy
,因此返回的对象(按照约定)不会保留,并将在自动释放池的第一个排水口自动释放


相反,如果您遇到过类似的情况,在尝试访问此对象时,您无法弄清楚为什么会收到EXC_BAD_访问错误,那么它很可能很快就被释放了。在这些情况下,您需要在此类的范围内执行手动保留/释放。

无需分配UIImage的实例
imageWithContentsOfFile
是一个静态方法,可以在类本身上调用

由于
imageWithContentsOfFile
不包括术语
alloc
new
copy
,因此返回的对象(按照约定)不会保留,并将在自动释放池的第一个排水口自动释放


相反,如果您遇到过类似的情况,在尝试访问此对象时,您无法弄清楚为什么会收到EXC_BAD_访问错误,那么它很可能很快就被释放了。在这些情况下,您将需要在此类的范围内执行手动保留/释放。

当然!我确实忘了带文件内容的图像!我正在考虑我使用的那个和[UIImage ImageName…]但是最后一个使用我试图保存的内存缓存图像,因为我试图将我的应用程序置于内存节食模式。谢谢当然我确实忘了带文件内容的图像!我正在考虑我使用的那个和[UIImage ImageName…]但是最后一个使用我试图保存的内存缓存图像,因为我试图将我的应用程序置于内存节食模式。谢谢