Objective c 设置属性时是否需要使用临时变量';价值
我有一个(保留的)UIImage属性,用于保存用户选择的图像 这是用户进行选择时我目前拥有的代码:Objective c 设置属性时是否需要使用临时变量';价值,objective-c,ios,Objective C,Ios,我有一个(保留的)UIImage属性,用于保存用户选择的图像 这是用户进行选择时我目前拥有的代码: - (IBAction) selectImage1 { UIImage *image = [UIImage imageNamed: @"image1-big.png"]; self.bigImage = image; } 但我想知道是否可以省略临时变量便利方法的使用,只需执行以下操作: - (IBAction) selectImage1 { self.bigImage
- (IBAction) selectImage1 {
UIImage *image = [UIImage imageNamed: @"image1-big.png"];
self.bigImage = image;
}
但我想知道是否可以省略临时变量便利方法的使用,只需执行以下操作:
- (IBAction) selectImage1 {
self.bigImage = [UIImage imageNamed: @"image1-big.png"];
}
如果第二种方法有问题(我猜与内存管理有关),有人能解释一下吗
谢谢大家! 第二条路很好。行
UIImage*image=[UIImage imagename:@“image1 big.png”]代码>为您提供一个自动释放的变量图像
。通过self.bigImage=image
将其分配给ivar将调用bigImage
的setter方法,该方法保留该值。因此,行self.bigImage=[UIImage ImageName:@“image1 big.png”]
相当于更详细的方式。您发布的两个代码片段在内存管理方面没有区别;除非您对第一个代码段中两行之间的retain counts有具体的了解
在ARC环境中,局部变量将是一个“强”指针,但是当方法离开作用域时,它将被释放。在第二个代码段中,没有中间的retain/release指针,因此实际上可能会稍微高效一些
我看到第一个代码段的技巧是必要的,当您有一个弱指针(即弱@property)时,设置self.foo=[UIView…
将立即允许释放它。在这些情况下,最好在使用它时使用局部变量保持它:
UIView *someFoo = [UIView...
[self addSubview:someFoo];
self.someWeakProperty = someFoo;
与之相比:
self.someWeakProperty = [UIView...
[self addSubview:self.someWeakProperty]; // it's already nil!!