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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sabjiang 中级黑马   /  2014-5-3 14:35  /  1465 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在Xcode 4.5,可以在类里面,省略@synthesize对@Property的实现,直接在.h文件中声明即可:@property int age;这样声明之后,.m文件里会自动生成一个_age成员变量。可是使用这个类的时候,给age属性赋值,却依然调用的是age,这是怎么回事?


  1. #import <Foundation/Foundation.h>

  2. @interface Student : NSObject

  3. @property int age;

  4. @end
复制代码

  1. #import "Student.h"

  2. @implementation Student

  3. -(void)test{
  4.     _age=10;
  5. }
  6. @end
复制代码


  1.   Student *stu=[[Student alloc] init];
  2.         
  3.         stu.age=10;
  4.         
  5.         NSLog(@"%d",stu.age);
  6.         
  7.         [stu release];
复制代码

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

3 个回复

倒序浏览
你那不就是调用的stu的age的setter和getter方法么?   因为生成的成员变量默认是private类型的成员变量。而这种类型的变量,只能在类的实现中直接访问,在主函数中,需要调用其setter和getter方法访问

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
Student *stu=[[Student alloc] init];
        
        stu.age=10;
        //等价于[stu setAge:10];  //setter 内部 :_age=10
        NSLog(@"%d",stu.age);//[stu age];  //getter
        
        [stu release];

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
老师视频里讲过,点方法只是为了书写方便,计算机会自动翻译成set,get的,好好听老师讲课
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马