成员变量访问赋值的两种方式:
一.get set方式
@interface Person : NSObject{
//成员变量
NSString* _name;
}
-(void)setName:(NSString*)name;
-(NSString*)name;
@end
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Person* p1 = [Person new];
[p1 name];
[p1 setName:@"dancer"];
}
return 0;
}
二.属性方式
1.@property(strong, nonatomic)
@interface Person : NSObject{
//成员变量
NSString* _name;
}
//属性
@property(strong, nonatomic)NSString* name;
@end
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Person* p1 = [Person new];
p1.name = @"dancer";
NSString* name = p1.name;
NSLog(@"name = %@",name);
}
return 0;
}
2.声明property声明synthesize
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface Person : NSObject{
NSInteger _age;
}
//属性
@property(assign, nonatomic)NSInteger age;
@end
NS_ASSUME_NONNULL_END
#import "Person.h"
@implementation Person
@synthesize age;
@end
3.省略成员变量的属性方式
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface Person : NSObject{
NSInteger _age;
}
//属性
@property(strong, nonatomic)NSString* name;
@property(assign, nonatomic)NSInteger age;
//没有对应的成员变量可以自动生成一个私有的成员变量 _属性名
@property(assign, nonatomic)NSInteger weight;
@end
NS_ASSUME_NONNULL_END
使用synthesize修改自动生成的成员变量的名字
#import "Person.h"
@implementation Person
@synthesize age;
//使用synthesize修改自动生成的成员变量的名字
@synthesize weight = _myWeight;
@end