黑马程序员 oc随记 写一个手动内存释放

本文介绍了一个使用Objective-C编写的简单程序示例,演示了如何创建并管理不同类型的对象,包括商品、买家和卖家等,并详细展示了内存管理的过程,如对象的创建与释放,以及在实践中遇到的一个关于拼写错误导致的内存泄漏问题。

真要命,半天找不到内存泄漏的原因,结果发现是自己把一个类的字母少写了,郁闷。

#import <Foundation/Foundation.h>
#import "goods.h"
#import "selfer.h"
#import "buyer.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        buyer *b=[buyer new];
        goods *g=[goods new];
        selfer *s=[selfer new];
        b.name=@"买家";
        b.age=19 ;
        b.high=183;
        s.name=@"卖家";
        s.age=22;
        s.high=155;
        g.name=@"巧克力";
        g.kg=1.23;
        g.price=5;
        
        [s setGoods:g];
        [g release];
        [s release];
        [b release];
        
    }
    return 0;
}

#import <Foundation/Foundation.h>
typedef struct {
    int year;
    int month;
    int day;
    
}producedate;
typedef struct {
    int year;
    int month;
    int day;
    
}expiredate;
@interface goods : NSObject
@property (nonatomic,retain)NSString* name;
@property (nonatomic,assign)int price;
@property (nonatomic,assign)float kg;
@property (nonatomic,retain)NSString* image;
@property (nonatomic,assign ) producedate producedate;
@property (nonatomic,assign) expiredate expiredate;
@end

#import "goods.h"

@implementation goods
-(void)dealloc{
    NSLog(@"商品被买家带走了");
    [_name release];
    [_image release];
    [super dealloc];
}


@end

#import "person.h"
#import "goods.h"
@interface selfer : person
{
    goods *_goods;
}
@property(nonatomic,retain)goods *goods;
-(void)zhanshi;
@end

#import "selfer.h"

@implementation selfer
-(void)dealloc{
    
    [_goods release];
    NSLog(@"卖家走了");
    [super dealloc];
}

-(void)zhanshi{
    NSLog(@"商品名称:%@,商品价格:%d,商品重量%2f;商品生产日期:%d年-%d月-%d日;商品过期日期:%d年-%d月-%d日;",_goods.name,_goods.price,_goods.kg,_goods.producedate.year,_goods.producedate.month,_goods.producedate.day,_goods.expiredate.
          year,_goods.expiredate.month,_goods.expiredate.day);
}

@end

#import "person.h"

@interface buyer : person

@end

#import "buyer.h"

@implementation buyer
-(void)dealloc{
    NSLog(@"买家走了");
    [super dealloc];
}


@end

#import <Foundation/Foundation.h>
typedef enum {ksexman,ksexwomen}sex;
@interface person : NSObject
{
    sex *_sex;
    NSString *_name;
    int _age;
    int _high;
}
@property(nonatomic,assign) sex *sex;
@property(nonatomic,retain) NSString *name;
@property(nonatomic,assign) int age;
@property(nonatomic,assign) int high;
@end

#import "person.h"

@implementation person
-(void)dealloc{
    NSLog(@"sdasdasd");
    [_name release];
    [super dealloc];
}
@end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值