关于分类不能增加属性的说法
2016-05-31 15:58
253 查看
之前一直在用分类,没有为分类增加过属性,只是为分类增加一些方法.有种说法:分类只能增加方法,不能增加属性,要增加属性,只能用延展
事实情况并不是这样:我们完全可以为分类增加属性,下面就来实现一把
再实现这个属性的setter和getter方法(一定要实现,如果不实现,xcode7.2中不会报错,但使用到这个属性的时候就会崩溃,有时间的可以试试,这里就不给出截图了):
分类完成之后,我们开始使用这个分类(在控制器中导入分类,然后创建NSString对象):
从断点可以看出,NSString这个类确实是具有了我们增加的属性:
extendedPropertyName
而且从断点可以看出,可以通过这个属性的getter方法得到这个属性的值
事实上:在我们为分类增加属性时,系统没有为我们自动实现setter和getter方法,所以需要手动实现
这与继承很相似,但不同之处在于,使用分类可以直接用原来的类创建对象,并使用我们增加的属性,这样能让人觉得有种"亲切感"
事实情况并不是这样:我们完全可以为分类增加属性,下面就来实现一把
再实现这个属性的setter和getter方法(一定要实现,如果不实现,xcode7.2中不会报错,但使用到这个属性的时候就会崩溃,有时间的可以试试,这里就不给出截图了):
分类完成之后,我们开始使用这个分类(在控制器中导入分类,然后创建NSString对象):
从断点可以看出,NSString这个类确实是具有了我们增加的属性:
extendedPropertyName
而且从断点可以看出,可以通过这个属性的getter方法得到这个属性的值
事实上:在我们为分类增加属性时,系统没有为我们自动实现setter和getter方法,所以需要手动实现
这与继承很相似,但不同之处在于,使用分类可以直接用原来的类创建对象,并使用我们增加的属性,这样能让人觉得有种"亲切感"
相关文章推荐
- Python动态类型的学习---引用的理解
- 土人系列AS入门教程 -- 对象篇
- PostgreSQL教程(三):表的继承和分区表详解
- C#托管堆对象实例包含内容分析
- C#实现获取不同对象中名称相同属性的方法
- Lua面向对象之类和继承浅析
- 浅析Ruby中继承和消息的相关知识
- javascript asp教程第十一课--Application 对象
- PowerShell中使用Out-String命令把对象转换成字符串输出的例子
- VBS教程:对象-正则表达式(RegExp)对象
- 设计引导--一个鸭子游戏引发的设计理念(多态,继承,抽象,接口,策略者模式)
- C#检查指定对象是否存在于ArrayList集合中的方法
- sql2008启动代理未将对象应用到实例解决方案
- C#编程自学之类和对象
- C++中对象的常引用、动态建立和释放相关知识讲解
- C++实现不能被继承的类实例分析
- C# 面向对象三大特性:封装、继承、多态
- php中将一个对象保存到Session中的方法
- PHP类的封装与继承详解
- php对象和数组相互转换的方法