黑马程序员技术交流社区

标题: 省略@synthesize,生成的私有成员变量 [打印本页]

作者: sabjiang    时间: 2014-5-3 14:35
标题: 省略@synthesize,生成的私有成员变量
在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];
复制代码

作者: 执着的土豆    时间: 2014-5-3 14:49
你那不就是调用的stu的age的setter和getter方法么?   因为生成的成员变量默认是private类型的成员变量。而这种类型的变量,只能在类的实现中直接访问,在主函数中,需要调用其setter和getter方法访问
作者: dawn.dai    时间: 2014-5-3 15:08
Student *stu=[[Student alloc] init];
        
        stu.age=10;
        //等价于[stu setAge:10];  //setter 内部 :_age=10
        NSLog(@"%d",stu.age);//[stu age];  //getter
        
        [stu release];
作者: 曹雨    时间: 2014-5-3 23:36
老师视频里讲过,点方法只是为了书写方便,计算机会自动翻译成set,get的,好好听老师讲课




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