疑问: 下面代码,为什么可以直接使用
imgTemp = [imgTemp resizableImageWithCapInsets: ....
,并不需要,另外新建一个UIImage来接收呢?
如: UIImage * img = [imgTemp resizableImageWithCapInsets: ....
+(UIImage *)ResizingImageWithName:(NSString *)name andMode:(UIImageResizingMode)mode{
UIImage *imgTemp = [UIImage imageNamed:name];
CGFloat imgW = imgTemp.size.width;
CGFloat imgH = imgTemp.size.height;
imgTemp = [imgTemp resizableImageWithCapInsets:UIEdgeInsetsMake(imgH*0.5, imgW*0.5, imgH*0.5-1, imgW*0.5-1) resizingMode:mode];
return imgTemp;
}
内存分析:
首先: 内存最常用的有2个区域.(栈和堆),读代码从右向左读.
1.UIImage *imgTemp
是指针,是局部变量,不是对象.
2.imgTemp
保存的是[UIImage imageNamed:name]
对象的地址.
3.[UIImage imageNamed:name]
对象放堆,UIImage *imgTemp
指针/局部变量放栈中
开始时imgTemp指针指向对象[UIImage imageNamed....]
最后时imgTemp指针指向新创建的对象[imgTemp resizableImageWithCapInsets: ....]