gpt4 book ai didi

iphone - 我对 “anonymous iOS memory” 感到困惑

转载 作者:可可西里 更新时间:2023-11-01 06:20:14 27 4
gpt4 key购买 nike

我有三种写这段代码的方法。第三种方式让我感到困惑。

第一种方法很好。

//.h
@property (weak, nonatomic) IBOutlet UIImageView *picImageStage;
//.m
NSString *name = [NSString stringWithFormat:@"allen.png"];
UIImage *image = [UIImage imageNamed:name];
UIImageView *t = [[UIImageView alloc]initWithImage:image];
self.picImageStage = t;

第二种方法很好。

//.h
@property (retain, nonatomic) IBOutlet UIImageView *picImageStage;
//.m
NSString *name = [NSString stringWithFormat:@"allen.png"];
UIImage *image = [UIImage imageNamed:name];
self.picImageStage = [[UIImageView alloc]initWithImage:image];

第三条路转错了。

//.h
@property (weak, nonatomic) IBOutlet UIImageView *picImageStage;
//.m
NSString *name = [NSString stringWithFormat:@"allen.png"];
UIImage *image = [UIImage imageNamed:name];
self.picImageStage = [[UIImageView alloc]initWithImage:image];

我不明白为什么。谁能帮帮我?谢谢:D

最佳答案

第三个代码段中,您已将@property 声明为weak,并且UIImageView 将立即释放。因为当同一个对象没有强关系时,弱关系将被取消。

在几乎相同的第一个片段中,您首先将 UIImageView 分配给了一个局部变量。此局部变量隐含地使用强关系。如果您离开局部强变量的范围(即运行此代码的方法),该属性也将被释放,除非您在离开变量范围之前创建另一个强赋值。例如,如果您将 UIImageView 添加为另一个 View 的 subview ,就会发生这种情况。将一个 View 添加到另一个 View 会建立牢固的关系。

关于iphone - 我对 “anonymous iOS memory” 感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13967309/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com