系统类,系统分类和自定义分类优先级

在自定义的系统类(A)的分类中,重写A的系统属性和方法时,仍会优先调用系统的的属性和方法。重点内容 而重写A的系统分类的方法时,则会优先调用重写的方法。
例子:NSString
length 属性和 characterAtIndex:方法为系统方法,即使在自定义分类里重写,仍会优先调用系统的属性和方法
substringFromIndex: 方法是NSString的系统分类的方法,在自定义的分类里重写后,则会优先调用自定义的分类

NSString+test.h文件
@interface NSString (test)
/**
* 重写系统属性和方法
*/
- (NSUInteger)length;
- (unichar)characterAtIndex:(NSInteger)index;

/**
* 重写系统分类方法
*/
- (NSString *)substringFromIndex:(NSUInteger)from;
@end

NSString+test.m 文件
@implementation NSString (test)

  • (NSUInteger)length
    {
    return 10;
    }
  • (NSString *)substringFromIndex:(NSUInteger)from
    {
    return @”xxxxx”;
    }
  • (unichar)characterAtIndex:(NSInteger)index
    {
    return ‘r’;
    }
    @end

main.m main函数里调用
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here…

  NSString *str = @"Hello,everyone";
  NSString *str1 = [str substringFromIndex:3];
  unichar s = [str characterAtIndex:3];

  NSLog(@"str.length : %ld",str.length);
  NSLog(@"str1 : %@",str1);
  NSLog(@"s : %c",s);
}
return 0;

}

输出结果为:
2017-07-13 22:34:10.831949+0800 MulInteranceDemo[10740:416546] str.length : 14
2017-07-13 22:34:10.831987+0800 MulInteranceDemo[10740:416546] str1 : xxxxx
2017-07-13 22:34:10.832004+0800 MulInteranceDemo[10740:416546] s : l

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值