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*****************************************************
———————————————————————————————————————————
电商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*****************************************************
———————————————————————————————————————————
相关文章推荐
- Objective-C 【@property 的参数问题】
- Objective-C 【@property 的参数问题】
- OC随机数方法
- [objective-c]_[performSelector的使用]
- objective-C编程 面向对象的编程基本概念
- [Objective-c]_[NSString的基本使用]
- OC中如何进行多文件开发?
- IOS之Objective-C学习笔记(六)
- 斯坦福大学iOS应用开发教程学习笔记(第三课) Objective-C
- NSMutableString可变字符串的定义及常用方法
- 关于JSONArray明明添加add JSONObject却为空
- OC基础-零基础学习Objective-C:第四部分.NSArray
- OC基础-零基础学习Objective-C:第五部分.@property
- OC基础-零基础学习Objective-C:第六部分.ARC内存管理
- objective-c 实现常用算法(冒泡、选择、快速、插入)
- Swift Tutorial(swift 教程) 3:Arrays, Objects, and Classes数组,对象和类
- gobject base class
- iOS开发系列—Objective-C之内存管理(前辈写的,借鉴了一下,超赞)
- swift中导入Objective-c的第三方库(swift与oc混编)
- gobject type system