关于分类不能增加属性的说法

原创 2016年05月31日 15:58:51

之前一直在用分类,没有为分类增加过属性,只是为分类增加一些方法.有种说法:分类只能增加方法,不能增加属性,要增加属性,只能用延展

事实情况并不是这样:我们完全可以为分类增加属性,下面就来实现一把


再实现这个属性的setter和getter方法(一定要实现,如果不实现,xcode7.2中不会报错,但使用到这个属性的时候就会崩溃,有时间的可以试试,这里就不给出截图了):


分类完成之后,我们开始使用这个分类(在控制器中导入分类,然后创建NSString对象):

从断点可以看出,NSString这个类确实是具有了我们增加的属性:

extendedPropertyName

而且从断点可以看出,可以通过这个属性的getter方法得到这个属性的值


事实上:在我们为分类增加属性时,系统没有为我们自动实现setter和getter方法,所以需要手动实现

这与继承很相似,但不同之处在于,使用分类可以直接用原来的类创建对象,并使用我们增加的属性,这样能让人觉得有种"亲切感"

为啥分类中不能直接添加属性

分类中真的不能添加属性吗?一探究竟
  • yungeIOS
  • yungeIOS
  • 2016年11月17日 22:25
  • 1778

给分类(Category)添加属性

给分类(Category)添加属性 字数626 阅读513 评论1 喜欢17 遇到一个问题,写了一个分类,但原先类的属性不够用。添加一个属性,调用的时候崩溃了,说是找不到getter、...
  • intheair100
  • intheair100
  • 2015年07月07日 17:37
  • 1579

分类中究竟能不能增加成员变量?

分类中能否增加成员变量的探讨
  • Zsk_Zane
  • Zsk_Zane
  • 2015年08月11日 08:24
  • 1751

OC运行时语言--如何给一个分类添加属性

今天试着给一个分类添加一个属性新建一个Person类后,又建了一个Person类的分类,在分类的.h文件里添加了一个属性name(注意这里Person类是没有这个属性的) 在其他类中使用self调...
  • u010416360
  • u010416360
  • 2016年11月09日 14:52
  • 598

iOS - 分类添加属性之关联引用

分类是不能合成属性的,因为合成属性会生成对应的实例变量,而分类是不允许添加实例变量的(实例变量所在内存区域已初始化为不可更改,无法在动态运行时修改之)。 虽然不能增加实例变量,但是添加属性还是可以的...
  • lincsdnnet
  • lincsdnnet
  • 2016年09月04日 22:52
  • 731

Objective-C 给分类添加属性——关联对象

给分类添加“属性”咱们知道,分类中可以添加方法,却无法添加属性。那咱们有其他的方法来实现吗? 先来看看下面这段代码:@interface UIView (nl_Frame) @property (n...
  • womendeaiwoming
  • womendeaiwoming
  • 2015年06月07日 13:59
  • 3713

由category为什么不能添加属性所想到的

在category里添加属性的情况?在类中使用@property,系统会自动生成带“_”的成员变量和该变量的setter和getter方法。也就是说,属性相当于一个成员变量加getter和setter...
  • lwq718691587
  • lwq718691587
  • 2017年03月09日 17:52
  • 277

UIView及其分类的属性方法定义

UIView是iOS开发中最熟悉的控件,不是因为它用得多,而是很多UI控件都是继承它的,了解它的分类方法是很有必要的。 UIView其实是由多个分类构成,主要有如下几个分类: UIView :基本属性...
  • qq_14920635
  • qq_14920635
  • 2017年03月28日 17:04
  • 506

Swift学习4--枚举、属性、方法

枚举在switch中需要穷具所有枚举值,否则编译报错。enum CompassPoint { case North case South case East c...
  • dangyalingengjia
  • dangyalingengjia
  • 2016年12月07日 11:27
  • 494

iOS Category中添加属性和成员变量的区别

类别的简介 在开发中有时会用到Category,类别有三个作用:(1)可以将类的实现分散到多个不同文件或多个不同框架中,方便代码管理。也可以对框架提供类的扩展(因为框架类没有源码,不能修改)。 (2...
  • intheair100
  • intheair100
  • 2017年05月24日 23:27
  • 582
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于分类不能增加属性的说法
举报原因:
原因补充:

(最多只允许输入30个字)