Objective-C学习笔记-属性

1.属性的存取特性

  • readwrite,自动创建存取方法,默认特性
  • readonly,只创建取方法

2.属性的多线程特性

  • atomic,使用锁机制确保对该属性的操作的原子性,默认特性
  • nonatomic,无原子性,所以速度会快一点,建议使用的特性

3.属性的引用相关特性

  • strong,在进行存操作时,会持有传进来的对象,放弃原有对象,默认特性
  • weak,在进行存操作时,不持有传进来的对象,当该对象被释放时,自动赋为nil
  • unsafe_unretained,与weak类似,只是对象被释放后,不会自动赋为nil

4.属性的拷贝特性

  • assign,在进行存操作时,直接赋值为传进来的变量,默认特性
  • copy,在进行存操作时,拷贝传入的对象,该对象必须实现NSCopying协议的copyWithZone:方法,OC框架中,不可修改的对象一般仅仅返回self,并不会发生拷贝,因为对不可修改的对象进行复制没有必要,而对于可修改对象,一般会返回对应的不可修改对象,例如NSMutableString与NSString

5.属性虽然帮我们完成了存取方法,但是我们也可以手动实现存取方法来覆盖自动生成的存取方法,例如想要在存操作的时候更新下界面。但是这种情况下我们必须通过@synthesize创建实例变量(下划线开头的,原本会自动生成的成员变量)

#import "TestClass.h"

@interface TestClass()

@property (nonatomic) NSString * name;

@end

@implementation TestClass

//合成实例变量
@synthesize name=_name;

-(NSString*)name
{
    return _name;
}

-(void) setName:(NSString *)name
{
    _name=name;
    //更新界面
}

@end

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页