您的位置:首页 > 移动开发 > IOS开发

iOS类别(category)不能添加成员变量但是可以添加属性的问题

2016-03-29 23:06 399 查看
类别不需要介绍了把,网上一大堆(利用Objective-C的动态运行时分配机制,可以为现有的类添加新方法,这种为现有的类添加新方法的方式称为类别catagory,他可以为任何类添加新的方法,包括那些没有源代码的类)。

这篇博客主要想讨论关于类别不能添加成员变量的问题。

图中是我创建的一个UIImageView的类别,名称为Network,我在给类别添加实例变量view1的时候报错了(实例变量是成员变量的一种,实例变量应该是由类定义的变量),意思是实例变量不能被放在类别中。 但是localImage是我创建的一个属性,没有报错。但是这个localImage在 .m文件中@implement UIImageView(Network)中是无法使用的,只能在@implement UIImageView里用。

图1:



上面那段话可能听不懂,为什么不能用呢?看看下面的图片(图2), 我在controller里调用了这个方法,但是打印self.localImage的时候报错了,说"localImage"这个属性不在 UIImageView类型的对象上, 有点难理解。。但是如果把下面的set/get方法取消注释再跑一遍发现看看(图3)发现self.localImage = nil, 说明类别不会自动帮属性生成get/set方法。(_localImage无法使用,说明声明属性的时候没有生成_开头的成员变量)

图2:



图3:



图4:直接报错了,所以说添加的属性不能在@implementaion UIImageView(Network) 中使用

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: