ios-release理解

@interface classA:NSObject
{}

@property (nonatomic,retain)  UIImageView* imageView;
@end

@implementation classA
@synthesize imageView;
-(void)init
{
    //方法1:使用了get和set方法,但是在实例的时候没有通过self调用,则只增加一次保留记数
   imageView =   [[UIImageView alloc] init];
   NSLog(@"count=%d",[str retainCount]);//count=1
   [self addSubview:imageView];
//addSubview方法会增加一次引用记数
NSLog(
@"count=%d",[str retainCount]);//count=2 [imageView release]; NSLog(@"count=%d",[str retainCount]);//count=1 //使用此种方法,则需要在dealloc方法中,再次release一次 } @end
@interface classA:NSObject
{}

@property (nonatomic,reatin)  UIImageView* imageView;
@end

@implementation classA
@synthesize imageView;
-(void)init
{
//方法2:使用了get和set方法,在实例的时候通过self调用,则增加二次保留记数,因为在.h中声明了retain
    self.imageView =   [[UIImageView alloc] init];//通过了self.给参数赋值,因为在set的方法实现是先release旧值,再retatin新值,所以alloc了一次,retain新增了一次
NSLog(
@"%d",[imageView retainCount]);//count=2 [imageView release]; [self.window addSubview:self.imageView];//addSubview方法会增加一次引用记数 NSLog(@"%d",[imageView retainCount]);//count=2 [imageView release]; NSLog(@"%d",[imageView retainCount]);//count=1
//所以如果在声明中用了retatin,而在实例的时候用了self.的话,需要多release一次,但是如果把@property中的retain改为assign则不会多出一同次count。
} @end

有些东西还是不太理解

转载于:https://www.cnblogs.com/chenan/archive/2012/09/04/2670495.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值