OC_分类

本文介绍了Objective-C中分类的概念及使用方法,包括如何为现有类添加新的方法而不修改原始类,以及分类在项目开发中的应用场景。同时,还提供了具体的示例代码,展示了如何为NSString类添加计数数字的方法。

1.分类创建:

Xcode 6之后 newfile -- Object-C File 选择fileType


2.格式:

@interface 类名 (分类名)
@end

@implementation 类名 (分类名)
@end


3.作用

在不改变原来类的基础上,可以为类增加方法。

一般为系统类添加分类 或者在大型项目开发时用到。



4.使用注意

1>只能增加方法,不能增加成员变量。

2>分类方法实现中可以访问原来类中声明的成员变量。

3>如果有同名方法,优先级 :分类--->原来类-->父类。

4> 分类可以重新实现原来类的方法,但是会覆盖原来的方法。


5.编译顺序:

看 build phases -- compile sources

Xcode编译.m文件



示例:

给NSString增加类方法分类

+(int)numberCountOfString:(NSString *)string{
    int count = 0;//局部变量要初始化
    for (int i=0; i<string.length; i++) {
        char c = [string characterAtIndex:i];
        //注意字符单引号 ''  c>=48 && c<=97
        if (c>='0'&& c<='9') {
            count++;
        }
    }
    return count;
}

给NSString增加对象方法分类

-(int)countNumber{
        int count = 0;//局部变量要初始化
        for (int i=0; i<self.length; i++) {
            char c = [self characterAtIndex:i];
            //注意字符单引号 ''  c>=48 && c<=97
            if (c>='0'&& c<='9') {
                count++;
            }
        }
        return count;
}


``` SELECT id, name, level, -- parent_id, CASE WHEN level = 1 THEN CAST(id AS STRING) WHEN level = 2 THEN CONCAT_WS('.',CAST(id_l1 AS STRING) , CAST(id AS STRING)) WHEN level = 3 THEN CONCAT_WS('.',CAST(id_l1 AS STRING),CAST(id_l2 AS STRING), CAST(id AS STRING)) WHEN level = 4 THEN CONCAT_WS('.', CAST(id_l1 AS STRING), CAST(id_l2 AS STRING), CAST(id_l3 AS STRING), CAST(id AS STRING)) WHEN level = 5 THEN CONCAT_WS('.', CAST(id_l1 AS STRING), CAST(id_l2 AS STRING), CAST(id_l3 AS STRING), CAST(id_l4 AS STRING), CAST(id AS STRING)) END AS sort FROM ( SElECT l5.id, l5.name, l5.level, l5.parent_id as parent_l5, l4.id as id_l4, l4.parent_id as parent_l4, l3.id as id_l3, l3.parent_id as parent_l3, l2.id as id_l2, l2.parent_id as parent_l2, l1.id as id_l1 FROM view.ic_dev15oc_mart.view_dwd_plm_imp_plm_pm_prj_t_17010_hw_dev15oc_1054010535 l5 LEFT JOIN view.ic_dev15oc_mart.view_dwd_plm_imp_plm_pm_prj_t_17010_hw_dev15oc_1054010535 l4 ON l5.parent_id = l4.id AND l5.level = 5 LEFT JOIN view.ic_dev15oc_mart.view_dwd_plm_imp_plm_pm_prj_t_17010_hw_dev15oc_1054010535 l3 ON COALESCE(l4.parent_id, l5.parent_id) = l3.id AND l5.level >= 4 LEFT JOIN view.ic_dev15oc_mart.view_dwd_plm_imp_plm_pm_prj_t_17010_hw_dev15oc_1054010535 l2 ON COALESCE(l3.parent_id, l4.parent_id, l5.parent_id) = l2.id AND l5.level >= 3 LEFT JOIN view.ic_dev15oc_mart.view_dwd_plm_imp_plm_pm_prj_t_17010_hw_dev15oc_1054010535 l1 ON COALESCE(l2.parent_id, l3.parent_id, l4.parent_id, l5.parent_id) = l1.id AND l5.level >= 2; )```line 30:199 mismatched input '<EOF>' expecting ) near '6000' in subquery source
03-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值