iOS分类

作者: DeerRun | 来源:发表于2018-12-12 13:48 被阅读2次
// 1.分类是用于给原有类添加方法的, 它只能添加方法, 不能添加属性(成员变量)
@interface Person (NJ)
//{
//    double _height;
//}

// 2.分类中的@property, 只会生成setter/getter方法的声明, 不会生成实现以及私有的成员变量
//@property (nonatomic, assign) double height;

- (void) hello;

/*
 方法的调用顺序:
 1.分类
 2.本类
 3.父类
 */
@end

// 3、如果多个分类中都有和原有类中同名的方法, 那么调用该方法的时候执行谁由编译器决定
// 会执行最后一个参与编译的分类中的方法

// 4、注意: 如果分类中有和原有类同名的方法, 会调用分类中的方法
// 也就是说会忽略原有类的方法
// 注意: 在开发中尽量不要这样写
在分类中的属性没有成员变量个getter、setter方法。
实现getter和setter方法;所以我们无法通过getter和setter方法操作color也不能直接访问_color
实现getter和setter方法,并且找到一个地址空间供我们访问
@interface Dog (ext)

@property (nonatomic, strong)UIColor  *color;

@end


@implementation Dog (ext)
//这里用@selector(color)来用作 const void *key 的指针
- (UIColor *)color {
    return objc_getAssociatedObject(self, _cmd);
}

- (void)setColor:(UIColor *)color {
    objc_setAssociatedObject(self, @selector(color), color, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}

@end

属性 = 成员变量+getter、setter
在分类里使用@property声明属性后,又实现了setter和getter方法,那么在这个类以外可以正常通过点语法给该属性赋值和取值。就是说,在分类里使用@property声明属性,又实现了setter和getter方法后,可以认为给这个类添加上了属性

相关文章

  • iOS分类的实现原理简记

    该文为分类原理的简单记录,总结自如下文章,感谢作者分享: iOS底层原理总结 iOS分类底层实现原理小记 1、分类...

  • iOS基础总结理解及相关面试题

    iOS基础 分类(Category)和类扩展(Class Extension)分类(Category)Catego...

  • iOS 分类和扩展

    iOS 分类和扩展 分类 Category 分类(Category)是OC中的特有语法,它是表示一个指向分类的结构...

  • ios 消息提醒

    文章纲要: 1. iOS app外消息提醒分类 2. iOS app 内消息提醒分类 正文: 消息提醒基本是每个a...

  • oc 分类(category)相关

    标签:ios开发入门 添加分类的格式: @interface HSHAnimal (HSHDog) 分类的好处: ...

  • iOS开发——OC篇&OC高级语法

    iOS开发高级语法之分类,拓展,协议,代码块详解 一:分类 什么是分类Category? 分类就是类的补充和扩展部...

  • 分类Category、扩展Extension 分析

    前言 引用 iOS分类(category),类扩展(extension)—史上最全攻略 分类 Category 概...

  • iOS - 分类

    [toc] 参考 category OC转C++ Category 的底层源码 objc所有类和对象都是c结构体(...

  • iOS分类

    分类 Category 概念:给一个对象提供一些方法声明跟实现不可以给改对象添加成员变量 可以添加@propert...

  • iOS分类

网友评论

      本文标题:iOS分类

      本文链接:https://www.haomeiwen.com/subject/pcguhqtx.html