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

电商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 【电商APP应用代码-系统分析-详细注释-代码实现】的更多相关文章

  1. Android通用框架设计与完整电商APP开发系列文章

    作者|傅猿猿 责编|Javen205 有福利 有福利 有福利 鸣谢 感谢@傅猿猿 邀请写此系列文章 Android通用框架设计与完整电商APP开发 课程介绍 [导学视频] [课程详细介绍] 以下是部分 ...

  2. Kotlin实战案例:带你实现RecyclerView分页查询功能(仿照主流电商APP,可切换列表和网格效果)

    随着Kotlin的推广,一些国内公司的安卓项目开发,已经从Java完全切成Kotlin了.虽然Kotlin在各类编程语言中的排名比较靠后(据TIOBE发布了 19 年 8 月份的编程语言排行榜,Kot ...

  3. 开发者如何快速搭建自己的电商App?

    面向电商购物场景,HMS Core提供了创新的电商解决方案,帮助应用快速获客.提升转化率,实现业务增长.为了帮助开发者了解如何在电商购物类应用中集成HMS Core的各项能力,HMS Core开发了电 ...

  4. 从电商平台促销活动看电商app开发趋势

    据亿合科技小编了解到:尽管各大电商平台都进入了品质和品牌时代,但对于消费者来说,低价依然是一个有吸引力的因素.尼尔森<网络购物者趋势研究>报告显示,2016年价格敏感型购物者的比例从15% ...

  5. 电商app开发新趋势!如何突显竞争力?

    2017年是电商变化最大的一年,同时,也是最多机遇的一年,更是电商最好的时代,如最近所看到的亚马逊的市值已经超过了美国8大零售商的总和,带领美国率先走向了新零售时代;马云也在做改变,试图与线下的大卖场 ...

  6. 电商 APP 下单页(俗称车2) 业务流程概要设计

    购物车是电商APP的一个关键功能点,一般购物车包含 3-4 个页面,分别是: 1.购物车的商品列表页 2.商品下单页 3.订单付款页面 4.订单付款成功页面 由于现有购物车逻辑相对混乱,这里重新整理一 ...

  7. Umi + Dva的数据传递学习Demo(代码有详细注释)

    刚学习时写了篇笔记,以免自己忘记,用了一段时间后,觉得不如做个demo,代码写上注释,方便也在学习umi-dva的同学们理解更好,更容易上手. 这可能是网上注释最多,看了最易理解的学习小指南吧,哈哈. ...

  8. Android 仿电商app商品详情页按钮浮动效果

    1.效果图如下: 这效果用户体验还是很酷炫,今天我们就来讲解如何实现这个效果. 2.分析 为了方便理解,作图分析 如图所示,整个页面分为四个部分: 1.悬浮内容,floatView 2.顶部内容,he ...

  9. 给零基础的小白从0到1的react-naitve电商app——简单易学!

    先上链接https://github.com/duf1991/DY...我的第一个react-native学习成果,欢迎各位大佬star和issue!

随机推荐

  1. Linux内核分析笔记 与Linux内核开发理论

    http://www.cnblogs.com/hanyan225/category/308793.html

  2. 一款基于jQuery仿淘宝红色分类导航

    今天给大家分享一款基于jQuery仿淘宝红色分类导航.这款分类导航适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预览    ...

  3. 项目源码--Android视频MV类网站客户端

    下载源码 技术要点: 1.视频MV类网站客户端框架 2.底部TAB功能模块 3.用户管理模块 4.结合优质动画技术,良好的用户体验 5.用户设置模块 6.sqlite数据库灵活的应用 7.源码带有非常 ...

  4. Debian的定时执行命令Crontab

    转载:http://i.592.net/?post=276 Debian的定时执行命令Crontab,这个相当于Windows的计划任务 想要让Debian定时执行命令就得靠crontab了!     ...

  5. Nice是如何做iOS客户端架构的?

    一个创业产品的iOS客户端架构到底怎么做呢?现下最有活力的图片社交软件Nice的技术负责人刘诗彬将为我们解答创业产品如何实现iOS客户端架构. 分享人:刘诗彬,毕业于北京邮电大学电子信息科学与技术专业 ...

  6. 【Shell脚本学习19】Shell while循环

    while循环用于不断执行一系列命令,也用于从输入文件中读取数据:命令通常为测试条件.其格式为: while command do    Statement(s) to be executed if ...

  7. 【开源项目6】介绍MenuDrawer这个牛x的控件,实现左右出菜单,上下出菜单

    现在很多应用都很潇洒的从左边屏幕手势一划出个左边的隐藏菜单,右边一划出个隐藏菜单,上边一划出个隐藏菜单,下边一划出个隐藏菜单.或者像android的API16左右的激活列表项的功能.很多人肯定都很着迷 ...

  8. 【MYSQL】数据类型

    转载 https://www.baidu.com/s?ie=UTF-8&wd=cnblog 原文 泪云山海的博客 mysql 数据类型 1.整型 MySQL数据类型 含义(有符号) tinyi ...

  9. iOS UIimage初始化时的两种方法

    第一种方式:UIImage *image = [UIImage imageNamed:@"image"]; 使用这种方式,第一次读取的时候,先把这个图片存到缓存里,下次再使用时直接 ...

  10. (转)MySql开启远程连接权限

    命令行登陆: mysql -u root -p 不行的话可以从MySql.exe进入,找到Mysql根目录中路径类似:"MySQL\bin\mysql.exe",这样: D:\We ...