在XCode4.5以上,写了@property之后,系统会自动生成私有_字段和实现@synthesize方法

但如果自己写了set或者get方法之后,就不会帮你产生默认的下划线字段

Student.h:

#import <Foundation/Foundation.h>  @interface Student : NSObject{     @public   //以下就是共有类型  还有@private和@protected     int _age;     int _no;      } @property int age;//自动申明getter和setter方法 @property int no; //-(int)age; //-(int)no; ////OC里面没有构造方法 //-(void)setAge:(int)newAge;  //setAge:是它的方法名(注意要带上冒号) //-(void)setNo:(int)newNo; // //-(void)setAge:(int)newAge AndNo:(int)newNo;  //setAge: AdnNo:是它方法名 -(id)initWithAge:(int)newAge andWithNo:(int)newNo; //-(NSString *)description; @end

Student.m:

#import "Student.h"  @implementation Student @synthesize age=_age,no=_no;//自动实现setter和getter方法  //#pragma mark - setter //#pragma mark 设置年龄 //-(void)setAge:(int)newAge{ //    age=newAge; //} //#pragma mark 设置学号 //-(void)setNo:(int)newNo{ //    no=newNo; //} //#pragma mark 设置年龄跟学号 //-(void)setAge:(int)newAge AndNo:(int)newNo{ //    age=newAge; //    no=newNo; //} //#pragma mark - getter //#pragma mark 获得学号 //-(int)no{ //    return no; //} //#pragma mark 获得年龄 //-(int)age{ //    return age; //} #pragma mark - 构造方法 #pragma mark 通过传入年龄和学号初始化一个构造方法 -(id)initWithAge:(int)newAge andWithNo:(int)newNo{     if(self=[super init]) //首先要初始化父类方法     {         _age=newAge;         _no=newNo;         return self;     }     return nil; } //重写父类的description方法 //-(NSString *)description{ //    NSString * str =[NSString stringWithFormat:@"age is %i and no is ",self.age,self.no]; //    return str; //} @end

main:

#import <Foundation/Foundation.h> #import "Student.h"  int main(int argc, const char * argv[]) {      @autoreleasepool {                  Student * student=[[[Student alloc] initWithAge:20 andWithNo:1] autorelease];  //自动释放         NSLog(@"this student age=%i,and no=%i",[student age],[student no]);         NSLog(@"age=%i,no=%i",student.age,student.no);         NSLog(@"%@",student);//打印内存地址         //[student release];//防止内存泄漏,要释放该对象内存     }     return 0; }

结果:

2013-08-02 15:55:34.918 @property[1396:303] this student age=20,and no=1

2013-08-02 15:55:34.919 @property[1396:303] age=20,no=1

2013-08-02 15:55:34.920 @property[1396:303] <Student: 0x100109970>