黑马程序员技术交流社区

标题: oc中成员变量的声明问题 [打印本页]

作者: 李鹏-ios    时间: 2014-4-30 10:01
标题: oc中成员变量的声明问题
本帖最后由 李鹏-ios 于 2014-5-15 15:01 编辑

成员变量定义在@interface的大括号中,有些定义为@property;如:
  1. @interface Things()
  2. {
  3. NSInteger things1;
  4. }
  5. @property (readwrite, assign) NSInteger things2;
  6. @end
复制代码

这两个方式定义的things1和things2什么区别,必须不同的两种类型定义吗?谢谢!


作者: siegee    时间: 2014-4-30 10:16
@interface Things()
{
NSInteger things1;
}
@property (readwrite, assign) NSInteger things2;
@end
如上所述:1.如果你要things2指定对things1进行操作那么类型一定要一样,并要在implementation文件进行同步操作(xcode4.6后不用自己动手了);
2.things1默认是受保护的,不能被外界访问。所以想要背其他类访问,就要提供一个公共的接口;

作者: 曹雨    时间: 2014-5-4 11:05
@interface Things()
{
NSInteger things1;
}//这种方式在未进行定义的情况下,是缺省为protected。而且需要对things1进行set,get方法声明。
@property (readwrite, assign) NSInteger things2;//不在声明里进行声明,自动生成 _things2  成员变量(且为private)和set,get方法。建议用第二种,老师在视频里讲的很清楚,认真看。
@end
作者: 郑亚鸽    时间: 2014-5-4 15:14
1. 定义在@interface的大括号里 的成员变量并不会自动生成get 、set方法。
2.  @property 则会自动生成get set方法,并带有一些属性, 如果定义的是对象,也可以加入一些对内存的处理
3.只在@interface中定义变量的话,你所定义的变量只能在当前的类中访问,在其他类中是访问不了的;而用@property声明的变量可以在外部访问。
4、用了@property去声明的变量,可以使用“self.变量名”的方式去读写变量。而用@interface的方式就不可以
5.用了@property去定义,一般要在.m文件中用@synthsize去合成相应的setter,getter方法。否则会得到一个警告。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2