s.h#import@interface Student : NSObject{ @public NSString *_name; int _age; int _height;}// @property能够自动生成set和get方法的 声明// @property 成员变量类型 成员变量名称(去掉下划线);//- (void)setName:(NSString *)name;//- (NSString *)name;@property NSString *name;@ends.m/** 问题:想要给自己不带下划线的成员变量进行赋值,怎么办?> 需要给@synthesize指定,告诉该赋值给谁. @synthesize name = _name; 它就知道,赋值_name; */#import "Student.h"@implementation Student@synthesize name;//生成了getset方法的实现//- (void)setName:(NSString *)name//{// name = name;// NSLog(@"%p",name);//}//- (NSString *)name//{//// return name;//}@endmain.m#import #import "Student.h"int main(int argc, const char * argv[]) { @autoreleasepool { Student *s = [Student new]; s.name = @"亚索"; // 这步能够调用,证明@property生成了set和get方法的声明. [s setName:@"亚索"]; // 证明@synthesize生成了set和get方法的实现. NSLog(@"%p",s->name); NSLog(@"-----"); } return 0;}
@property增强使用
- Xcode4.4版本以后支持的
- 只使用 @property 进行声明,类自动帮你实现。
-
Xcode4.4以后property做了增强
- 帮助我们自动生成get/set方法的声明
- 帮助我们自动生成get/set方法的实现
s.h/** @property的加强用法: 1.生成set和get方法的声明 2.生成set和get方法的实现 3.生成带下划线的成员变量. 注意事项: 1. 当用户手动重写了set方法时,@property会生成get方法和带下划线的成员变量 2. 当用户手动重写了set和get方法时.@property不会生成待下划线的成员变量. 3. 当用户手动重写了get方法时,@property会生成set方法和带下划线的成员变量. */#import#import "Person.h"@interface Student : Person@property NSString *name;//生成的变量名是_name,@property int age;@property int height;@property int weight;@ends.m#import "Student.h"@implementation Student//@synthesize age = _age,height = _height,weight = _weight,name = _name;//手动重写get方法- (NSString *)name{ return _name;}- (instancetype)init{ if (self = [super init]) { NSLog(@"s---%@",self); NSLog(@"s---%@",super.class); } return self;}@end