objective-c计数器学习

本文通过具体的Objective-C代码示例,展示了如何正确地使用内存管理技术来避免内存泄漏。通过Person和Book两个类的交互,详细说明了引用计数及释放机制的工作原理。
//
//  Book.h
//  obj-c学习1
//
//  Created by itfanr on 14/11/30.
//  Copyright (c) 2014年 itfanr. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Book : NSObject


@property float price ;
-(id)initWithPrice:(float) price ;
@end
//
//  Book.m
//  obj-c学习1
//
//  Created by itfanr on 14/11/30.
//  Copyright (c) 2014年 itfanr. All rights reserved.
//

#import "Book.h"

@implementation Book
@synthesize price = _price ;

-(id)initWithPrice:(float)price{
    self = [super init] ;
    _price = price ;
    return self ;
}

- (void)dealloc
{
    NSLog(@"book is dealloced!") ;
    
    [super dealloc] ;
}
@end
//
//  Person.h
//  obj-c学习1
//
//  Created by itfanr on 14/11/30.
//  Copyright (c) 2014年 itfanr. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Book.h"
@interface Person : NSObject

@property Book *book ;
@property int age ;
-(id)initWithAge:(int)age ;
@end
//
//  Person.m
//  obj-c学习1
//
//  Created by itfanr on 14/11/30.
//  Copyright (c) 2014年 itfanr. All rights reserved.
//

#import "Person.h"
#import "Book.h"
@implementation Person:NSObject


@synthesize book = _book ;
-(void)setBook:(Book *)book{
    if(_book != book){
        [_book release] ;
        _book = [book retain] ;
    }
}
    
-(Book *)book{
    return _book ;
        
}

#pragma mark 初始化
-(id)initWithAge:(int)age   {
    self =  [super init] ;
    _age = age ;    
    return self;
}

#pragma mark 销毁函数 复写
- (void)dealloc
{   [_book release] ;
    NSLog(@"Person is dealloced" );
    [super dealloc] ;
}


@end
//
//  main.m
//  obj-c学习1
//
//  Created by itfanr on 14/11/29.
//  Copyright (c) 2014年 itfanr. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Person.h"
#import "Book.h"
int main(int argc, const char * argv[]) {
    Book *book1 = [[Book alloc]initWithPrice:4.5] ;
    Person * p = [[Person alloc] initWithAge:18] ;
    p.book = book1 ;
    [book1 release] ;
    [p release] ;
 
    return 0;
}

输出结果是:

2014-11-30 22:38:11.427 obj-c学习1[1228:911238] book is dealloced!
2014-11-30 22:38:11.428 obj-c学习1[1228:911238] Person is dealloced
Program ended with exit code: 0

发现没有内存泄漏了。

转载于:https://my.oschina.net/itfanr/blog/350636

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值