美文网首页
容易被忽视的类扩展

容易被忽视的类扩展

作者: QihuaZhou | 来源:发表于2016-04-14 11:46 被阅读35次

基础知识

类扩展(class extension)是一种特殊的OC类别(category),它没有类别名,小括号里面是空的。
还记得类别的作用吗?主要可以在已有类的基础上添加新的方法,可以添加属性property(必须是@dynamic类型的)。
想进一步了解类别的小伙伴可以移步以下链接:浅谈OC类别(Category)

类别的局限性有两个:

  • 不能添加实例变量,类别没有空间容纳实例变量。
  • 名称冲突,类别中的方法如果和现有类重名,则类别的新方法会完全取代原有的方法,导致原有方法不可用,当然我们可以添加前缀来避免冲突。

类扩展是一种特殊的类别,它不需要名字。它的额外特点如下:

  • 可以添加实例变量,这一点类别无法做到。
  • 可以将只读权限改成可读写权限。
    但需要注意的是,类扩展创建的实例变量,只能在这个类中使用。对于创建的属性和方法,如果没有添加到头文件.h,也只能本类中使用。

例子

在创建最简单的ViewController类时,在.m中:

#import "ViewController.h"

@interface ViewController ()
{
    NSString *sth;
}
@property (weak,nonatomic) IBOutlet UILabel *label;
@property (strong, nonatomic)NSDictionary *dic;
@end

代码中的@interface ViewController () 表明这就是一个类扩展,因此我们能够后接花括号添加实例变量NSString *sth;
我们常常光顾着写代码,而忽视了对最常见东西的思考,且码且思考。

感谢阅读,希望能帮助到你!欢迎转载分享,请注明出处~

相关文章

  • 容易被忽视的类扩展

    基础知识 类扩展(class extension)是一种特殊的OC类别(category),它没有类别名,小括号里...

  • Java--继承

      继承让我们更加容易实现类的扩展。比如,我们定义了人类,再定义Boy类就只需要扩展人类即可。实现了代码的重用,不...

  • 【设计模式】装饰者模式

    设计原则: 类应该对扩展开放,对修改关闭我们的目标是允许类容易扩展,在不修改现有代码的情况下,就可以搭配新的行为。...

  • (SPI)3.dubbo spi代码分析

    看三个方法,静态扩展类,adapter扩展类,activate扩展类。先看getExtension 获取实现类对象...

  • Kotlin-面向对象-进阶

    扩展 扩展方法 Kotlin支持扩展方法和扩展属性。语法:被扩展的类/接口名.方法名() 父类不能使用子类的扩展方...

  • JQuery插件

    类扩展: 对象扩展:

  • 每天学一点 Kotlin -- 类的进阶:扩展

    1. 扩展 1.1 类的扩展是给类增加新的方法或属性。 2. 扩展类的方法 1.2 扩展的语法:和定义函数差不多,...

  • 22章:类扩展

    类扩展 .h implemention 涉及实现细节的属性和方法,才在类扩展中声明。类扩展是一组私有的声明。只有类...

  • 类的扩展

    http://www.cnblogs.com/xubaoaichiyu/p/5483350.html

  • 类的扩展

    Category 分类,创建两个新文件,用于给没有实现文件的类增加新的方法,只能增加方法不能增加实例变量,扩充的方...

网友评论

      本文标题:容易被忽视的类扩展

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