iOS 属性引用 self.xx与_xx的区别

357 阅读1分钟

说明:

self.xx是调用的xx属性的get/set方法,而_xx则只是使用成员变量_xx,并不会调用get/set方法

注意:

最容易出问题的地方就是对属性xx或成员变量_xx的初始化的地方和调用时机,直接通过例子来看

举例:

Person.h文件

#import <Foundation/Foundation.h>

@interface Person : NSObject

@property(nonatomic,strong)NSString *name;

-(void)SetValue;

@end

Person.m文件(采用self.xx方式引用)

#import "Person.h"

@implementation Person

-(void)SetValue{

    NSLog(@"name=%@",self.name);

}

- (NSString *)name{

    return @"Jack";

}

@end

打印结果: name=Jack

Person.m文件(采用_xx方式引用)

#import "Person.h"

@implementation Person

-(void)SetValue{

    NSLog(@"name=%@",_name);

}

- (NSString *)name{

    return @"Jack";

}

@end

打印结果: name=(null)