OC中的分类的内部在访问原类的成员变量时,为什么@property中定义的变量不能直接被访问,而大括号里地变量就可以呢?
不是很明白@property生成的setter getter方法的同时生成的那个变量在.h文件中与同在.h文件中大括号中申明的私有变量有什么区别。

解决方案 »

  1.   

    分类只能定义方法,你要定义变量setter和getter方法需要用运行时框架来重写
      

  2.   

    本地变量应该是只有本类能访问了, 但属性在分类中是可以用的,楼主要用 self. 访问.
      

  3.   

    使用interface声明的成员变量是只能在自己类内部使用的,而不能在类的外部使用,(就是通过 类名. 点的方式是显示不出来的),pproperty则相反,它可以在类的外部访问,在类的内部可以通过下划线+变量名或者self.变量名的方式来访问。
      

  4.   

    @property NSString* name;这句默认是会生成一个名叫NSString* _name;这样一个成员变量,并且还会生成它的getter和setter方法,楼主在分类中直接直接想访问name这个成员变量是错误的,因为没有这个变量的声明,应该直接访问_name这个成员变量。