iOS开发学习第二十一课——属性 / 点语法

1.属性
//属性:为你自动生成settergetter
//能在⼀定程度上简化程序代码,并且增强实例变量的访问安全性

//属性声明的写法
//@property 数据类型 实例变量名;

//属性实现的写法
//@synthesize 实例变量名;

2.
属性的修饰符
//修饰符, 实质是对settergetter方法的限定

//(1)线程安全组
//nonatomic: 非原子性(不对多线程进行管理, 效率高)
//atomic: 原子性(在多线程下使用, 保证线程安全, 但效率会很低)
//:a.默认值:atomic, 一般使用nonatomic
//  b.atomic修饰的属性, 要么同时重写settergetter, 要么都不重写; 不允许只重写其中一个方法

//(2)内存管理组
//assign(默认值)
//retain
//copy
//weak
//strong

//weekstrongARC下才能够使用
//基本数据类型用assign
//对象用retain, weak, strong
//既是对象, 并且对象遵循协议, 才能使用copy
//:delegate写成属性, ARC下用weak, MRC下用assign

//(3)读写组
//readwrite(默认值)可读写, 生成settergetter
//readonly:只读, 只生成getter

//(4)方法重命名组
//setter=方法名
//getter=方法名
//:重新修改settergetter的名字, 不影响点语法的使用

3.
点语法
//点语法是setter  getter的快捷调用方法
//属性是⼀对gettersetter方法,点语法是属性的另一种调用格式
//如果点语法出现在赋值等号的左侧, 调用setter; 其他位置, 调用getter

***************************
Person.h
#import
@interface Person : NSObject
//属性的作用:
//1.可以自动生成settergetter方法(包括声明和实现)
//2.如果没有定义实例变量,则自动生成实例变量  命名原则 (_属性名)
@property (nonatomic, retain)NSString *name;
@property (nonatomic, retain)NSString *sex;
@property (nonatomic, assign)NSInteger age;
@property (nonatomic, assign)NSInteger number;
- (id)initWithName:(NSString *)name
               Sex:(
NSString *)sex
               Age:(
NSInteger)age
            Number:(NSInteger)number;
@end
***************************
Person.m
#import "Person.h"
//由关键字synthesize
//1.来完成属性声明对应的setter getter实现
//2.同时绑定实例变量
//如果我们不去定义,那么系统会生成@synthesize,但是实例变量的可见度是私有的
@implementation Person
- (id)initWithName:(NSString *)name
               Sex:(
NSString *)sex
               Age:(
NSInteger)age
            Number:(
NSInteger)number{
   
 self = [super init];
    //学习完属性之后,使用点语法
    if (self) {
        self.name = name;
       
 self.sex = sex;
       
 self.age = age;
        self.number = number;
    }
   
 return self;
}
@end
***************************
main.m
#import 
#import
 "Person.h"
#import
 "Student.h"
#import
 "Fraction.h"
int
 main(int argc, const char * argv[]) {
   
 @autoreleasepool {
       
 Person *per = [[Person alloc] initWithName:@"XiaoLong" Sex:@"m" Age:18Number:01];
       
 //调用setter方法 赋值
        [per
 setName:@"JunFeng"];
        per.
name = @"xxx";
        NSLog(@"name:%@  sex:%@  age:%ld  number:%ld",[per name],[per sex],[per age],[per number]);

你可能感兴趣的:(objective-c,编程,学习,ios开发)