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



    ———————————————————————————————————————————
    电商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*****************************************************


    ———————————————————————————————————————————

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    HDU
    HDU
    HDU
    HDU
    HDU
    HDU
    HDU
    HDU
    HDU
    HDU
  • 原文地址:https://www.cnblogs.com/wzy294250051/p/4787881.html
Copyright © 2020-2023  润新知