//.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; //正确//将变量声明为 retain, 实现文件中去除临时变量。
//.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]; //错误,为什么
@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; //正确//将变量声明为 retain, 实现文件中去除临时变量。
//.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]; //错误,为什么
//.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; //正确//第二种写法:
//将变量声明为 retain, 实现文件中去除临时变量。
//.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]; //错误,为什么谢谢 a21064346 的回复,我这里有三种写法,我主要是不太明白第三种方式。
但原因应该是这样的
第一中写法
UIImageView *t = [[UIImageView alloc]initWithImage:image];
self.picImageStage = t; //正确
虽然self.picImageStage是weak的也就是对t没有retain。但t自身没有释放,所以后续还可以操作,出了函数就不行了第三种写法
self.picImageStage = [[UIImageView alloc]initWithImage:image]; //错误,为什么
没有变量承载[[UIImageView alloc]initWithImage:image],而self.picImageStage也没有对其Retain所以创建出来就接着销毁了。
所以赋值没有意义。
2.weak和strong应该是ARC机制应用属性。如果用了arc的话retain就不能用了。
对于 closewbq 的观点,在第二点上有点不太理解,用了ARC的话,就不能在使用retain了嘛,如果,我要讲其作为成员变量的话,我想还是应该需要的吧,只不过用了arc,不需要自己去写 dealloc. 之前没有说清楚,是 运行 的时候获取不到数据,这个好像跟c++不一样,突然有点想法,也许是这样理解,当声明为weak的变量,他本身就不具有承载数据的能力,他只能是引用被retain之后的数据。不知道是不是这样理解。