A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李鹏-ios 中级黑马   /  2014-4-30 10:01  /  1571 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李鹏-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什么区别,必须不同的两种类型定义吗?谢谢!

评分

参与人数 1技术分 +1 收起 理由
脸皮猴 + 1

查看全部评分

4 个回复

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

评分

参与人数 1技术分 +1 收起 理由
脸皮猴 + 1

查看全部评分

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