黑马程序员---OC Category

本文探讨了Objective-C中类别的使用方式,包括对现有类的扩展、作为子类的替代手段以及对类中方法的归类。通过实例展示了如何在.h文件中声明类别,并在.m文件中实现类别。此外,还解释了分类的使用注意事项,以及如何在不增加成员变量的情况下访问类中的成员变量。最后介绍了非正式协议的概念和统计字符串中阿拉伯数字个数的代码示例。

类别的作用

在不修改原有的类的基础上增加新的方法
一个庞大的类可以分模块开发
一个庞大的类可以由多个人来编写,更有利于团队合作

使用类别的目的

1)对现有类进行扩展:
可以扩展
Cocoa touch框架中的类,在类别中增加的方法会被子类所继承,而且在运行时跟其他的方法没有区别。

2)作为子类的替代手段:不需要定义和使用一个子类,可以通过类别直接向已有的类里增加方法。

3)对类中的方法归类:利用category把一个庞大的类划分为小块来分别进行开发,从而更好的对类中的方法进行更新和维护。


.h文件中,声明类别:

@interface ClassName (CategoryName)

NewMethod; //在类别中添加方法,不允许在类别中添加变量

@end


声明类别格式


1)新添加的方法必须写在 @interface 与@end之间
2)ClassName 现有类的类名(要为哪个类扩展方法)

3)CategoryName 待声明的类别名称
4)NewMethod 新添加的方法


在.m文件中(也可以在.h中实现),实现类别:

@implementation ClassName(CategoryName)
{

......

}

@end


实现类别格式


1)新方法的实现必须写在@ implementation@end之间

2)ClassName 现有类的类名

3)CategoryName 待声明的类别名称

4)NewMethod 新添加的方法的实现 


分类的使用注意事项


1)分类只能增加方法, 不能增加成员变量、@property(可能编译不报错,但是运行有问题

@interface Person (study)

@property int age;

-(void)study;
-(
void)work;

@end

#import <Foundation/Foundation.h>

#import "Person.h"
#import "Person+study.h"
int main(int argc, const char * argv[]) {

@autoreleasepool {
Person *p = [Person new];

[p eat];
[p
run];

p.age = 10;

}

return 0;

分类可以访问原来类中的成员变量

如:

#import <Foundation/Foundation.h>


//原类

@interface Person : NSObject

{

    @public

    int _age;

}

@end

//类别

@implementation Person (study){

     - (void)study{

     NSLog(@"age = %d",_age);

}

@end


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

    @autoreleasepool {

        //对象

        Person *p = [Person new];

        [p study];

        

    }

    return 0;

}


非正式协议

非正式协议就是给NSObject类创建的类目(分类)又叫做非正式协议, 非正式协议一般不需要进行实现,一般在子类中进行方法的重写。 

统计一个字符串中阿拉伯数字的个数

NSString *str = @"ada12sfasdf1213234asfda 32424 121 aa11afdsf"; 

@interface NSString (count)


-(void)countStrNum;


@end


@implementation NSString (count)


-(void)countStrNum{

int count=0;
//遍历字符串
for(int i=0;i<self.length;i++){ 

//获取字符串的每一个字符
unichar c = [self characterAtIndex:i];//判断是否是阿拉伯数字
if (c>='0' && c<='9') {

//如果是阿拉伯数字,则+1

count++;}

}

NSLog(@"count = %d",count);} 




多角色体系 支持管理员、商家、消费者三种角色,权限分级管控: 管理员:负责平台整体配置、用户审核、数据监控等全局操作。 商家:管理店铺信息、发布商品、处理订单、回复评价等。 消费者:浏览商品、加入购物车、下单支付、评价商品等。 实现用户注册(手机号 / 邮箱验证)、登录(支持密码 / 验证码 / 第三方登录)、个人信息管理(头像、收货地址、密码修改)。 权限精细化控制 商家仅能管理自家店铺及商品,消费者仅能查看和购买商品,管理员拥有全平台数据访问权限。 二、商品管理功能 商品信息维护 商家可发布商品:填写名称、分类(如服饰、电子产品)、子类别(如手机、笔记本)、规格(尺寸、颜色、型号)、价格、库存、详情描述(图文)、物流信息(运费、发货地)等。 支持商品上下架、库存调整、信息编辑,系统自动记录商品状态变更日志。 商品分类与搜索 按多级分类展示商品(如 “数码产品→手机→智能手机”),支持自定义分类体系。 提供智能搜索功能:按关键词(名称、品牌)搜索,支持模糊匹配和搜索联想;结合用户浏览历史对搜索结果排序(优先展示高相关度商品)。 商品推荐 基于用户浏览、收藏、购买记录,推荐相似商品(如 “浏览过该商品的用户还买了…”)。 首页展示热门商品(销量 TOP10)、新品上架、限时折扣等推荐列表。 三、订单与交易管理 购物车与下单 消费者可将商品加入购物车,支持修改数量、选择规格、移除商品,系统自动计算总价(含运费、折扣)。 下单流程:确认收货地址→选择支付方式(在线支付、货到付款)→提交订单→系统生成唯一订单号。 订单处理流程 订单状态跟踪:待支付→已支付→商家发货→物流运输→消费者收货→订单完成,各状态变更实时通知用户。 商家端功能:查看新订单提醒、确认发货(填写物流单号)、处理退款申请(需审核理由)。 消费者端功能:查看订单详情、追踪物流、申请退款 / 退货、确认收货。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值