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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 哈利梅 中级黑马   /  2014-10-20 10:32  /  1410 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看视频感觉越看有些地方越糊涂了。。。请问一下:
@property int x
@property int y
用这个创出的成员变量是_x还是x???
下面如果有一个对象方法让输入x和y的值,例如:
- (void)setX:(int)x  andY:(int)y
{
    //这个位置是输入:
      _x = x;
      _y = y;

    //还是输入:
      x = x;
      y = y;
}


我看视频上面说,创出的对象应该是_x和_y,但是你如果注意的话,就在老师说这句之前,后面的作业点评上有个同学写的就是 self.x = x;   self.y = y;    这样就把我弄糊涂了,求各位大神们帮忙啊,谢谢了

7 个回复

正序浏览
qiusiyu 中级黑马 2014-10-21 07:36:34
8#
@property 默认创建出来的就是苹果官方推荐的  _x  _y  的写法,这个毋庸置疑。输入时候当然是 _x=x;  至于楼主最后所说的作业点评,应该是该同学在实现中定义了 : @synthesize x=_x;
回复 使用道具 举报
coyote 中级黑马 2014-10-20 23:53:17
7#
@property int x;生产的成员变量是_x,所以下面写_x = x;是正确的,self.x是点语法,调用set方法
回复 使用道具 举报
_x = x;的意思是将传进来的x赋值给成员变量_x,self.x指的就是成员变量的_x,而不是形参的x,这样说能明白么?
回复 使用道具 举报
这个貌似是xcode的特性,用@property可以直接创建对应的成员变量的set和get方法,在类的内部的成员变量是加下划线的,因为你会发现,@property帮你自动写的set和get方法实现里面,是写 _x=x,不过我不能确定,我也是边学边忘
回复 使用道具 举报
不是的,请你再看看,下面的set方法不是用来定义setter和getter的,而是用来给成员变量赋值的,就是一个赋值的方法,所以本身写的没有错误的,而且请注意你说的哦,首先,你的@property不能够写到{}大括号里面的,而是在大括号外面,所以你写错了,另外,你说:}没有这段的话 就会自动 创出_x 和_Y   这个是错的,有了上面的@property,系统才会自动定义x和y,我现在问的是,自动定义出来的成员变量x和y的形式不是很明确,不知道是不是在前面带有下划线,请知道的大神们帮帮忙,谢谢了~~~~
回复 使用道具 举报
.如果不创建成员变量 int x ,int y, 4.5以上版本的xcode 会默认生成私有_x 和_y 这样就可以省略 @synthesize
若在创建了成员变量则 就不会自动生成了
student :NSObject{
@property int x
@property int y



}没有这段的话 就会自动 创出_x 和_Y

2. 你的方法格式写错了吧  如果用了@property的话就不用set方法了
回复 使用道具 举报
那个不高兴的小脸是怎么出来的???各位不要太在意啊,那个是个 :  和  (  合到一起写所以自动出来的。。。。。希望大家可以看懂,不好意思啊~~~~下次注意
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马