您的位置:首页 > 移动开发 > Objective-C

Objective-C 【电商APP应用代码-系统分析-详细注释-代码实现】

2015-09-01 09:17 821 查看
———————————————————————————————————————————

电商APP应用

*************************************************Goods.h*****************************************************

#import <Foundation/Foundation.h>

//结构体定义

typedef struct

{

int year;

int month;

int day;

int hour;

int minute;

int second;

}ProdDate;

@interface Goods : NSObject

//这里要根据合适的情况选择set/get的内存处理方式

//商品名称

@property (nonatomic,retain) NSString *productName;//(注意这里创建的实例变量名,其实都是带下划线的,这里之前已经学习过)

//单价

@property (nonatomic,assign) int productPrice;

//重量

@property (nonatomic,assign) float productWeight;

//商品展示图片(图片路径)

@property (nonatomic,retain) NSString *imgUrl;

//生产日期(这里是结构体类型,不用加‘*’号)

@property (nonatomic,assign) ProdDate produceDate;

//过期日期

@property (nonatomic,assign) ProdDate expireDate;

@end

*************************************************Goods.h*****************************************************

*************************************************Goods.m*****************************************************

#import "Goods.h"

@implementation Goods

- (void)dealloc

{

NSLog(@"Goods dealloc!");

[_productName release];//因为是retain类型的,所以说OC对象最后应该内存释放一次(释放的就是创建时候new出来计数1)

[_imgUrl release];

[super dealloc];

}

@end

*************************************************Goods.m*****************************************************

*************************************************Person.h*****************************************************

#import <Foundation/Foundation.h>

typedef enum {kSexMan,kSexWoman,kSexYao}Sex;

@interface Person : NSObject

//姓名

@property (nonatomic,retain) NSString *name;

//性别(一定不要用int类型,要用枚举类型)

@property (nonatomic,assign) Sex sex;

//年龄

@property (nonatomic,assign) int age;

//身高

@property (nonatomic,assign) float height;

@end

*************************************************Person.h*****************************************************

*************************************************Person.m****************************************************

#import "Person.h"

@implementation Person

- (void)dealloc

{

NSLog(@"Person dealloc!");

[_name release];

[super dealloc];

}

@end

*************************************************Person.m****************************************************

**************************************************Setter.h*****************************************************

#import "Person.h"

#import "Goods.h"

@interface Seller : Person

//卖家应该有一个Goods类型的参数,也就是卖的货物

@property (nonatomic,retain) Goods *goods;

@end

**************************************************Setter.m*****************************************************

#import "Seller.h"

@implementation Seller

- (void)dealloc

{

NSLog(@"Seller dealloc!");

[_goods release];//与之对应的是Seller里面@property的那个goods的属性

[super dealloc];

}

@end

**************************************************Setter.m*****************************************************

***************************************************Buyer.h****************************************************

#import "Person.h"

@interface Buyer : Person

//购买者没有参数

@end

***************************************************Buyer.h****************************************************

***************************************************Buyer.m****************************************************

#import "Buyer.h"

@implementation Buyer

- (void)dealloc

{

NSLog(@"Buyer dealloc!");

[super dealloc];

}

@end

***************************************************Buyer.m****************************************************

***************************************************mian.m*****************************************************

#import <Foundation/Foundation.h>

#import "Seller.h"

int main(int argc, const char * argv[]) {

@autoreleasepool {

Seller *seller=[[Seller alloc]init];//seller 1

Goods *g=[[Goods alloc]init];//g 1

NSLog(@"g=%tu",[g retainCount]);//验证输出 g 1

seller.goods=g;//g 2 (说明一下,在实例对象seller调用goods的set方法的时候,因为我们goods的set方法是@property retain类型,所以说在set方法中_goods(也就是g)的地址内存计数+1)

NSLog(@"g=%tu",[g retainCount]);//验证输出 g 2

[g release];//这两个地方,因为new了,所以必须选择释放 g 1

[seller release];//seller 0 g 0 (另外,在sellter release的时候,里面调用了父类的dealloc,也就是Person的dealloc,所以Person也释放了一次,故会输出“Person dealloc!”)

}

return 0;

}

***************************************************main.m*****************************************************

———————————————————————————————————————————
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: