zoukankan      html  css  js  c++  java
  • iOS类别(category)不能添加成员变量但是可以添加属性的问题

    类别不需要介绍了把,网上一大堆(利用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) 中使用

  • 相关阅读:
    软件工程第八周
    e课表项目第二次冲刺周期第十天
    蓝桥杯java历年真题及答案整理41~56
    蓝桥杯java历年真题及答案整理21~40
    蓝桥杯java历年真题及答案整理1~20.md
    异序二分查找 二分查找方程根 二分查找重复元素最后一个
    软件说明
    遗传算法--句子匹配
    Matlab学习笔记
    使用TenforFlow 搭建BP神经网络拟合二次函数
  • 原文地址:https://www.cnblogs.com/AnnieBabygn/p/5335278.html
Copyright © 2011-2022 走看看