美文网首页
修饰词用法

修饰词用法

作者: quanling | 来源:发表于2020-09-16 11:27 被阅读0次

ARC:assign、weak、strong、copy

MRC:assign、retain、copy、nonatomic、atomic

assign :  赋值

1.直接赋值,例如:int, float...等使用

2.没用使用其他(weak, strong,copy,retain)时,默认为assign修饰

3.对象使用assign,计数器不会+1(与strong的区别);当对象销毁时,指针不指向nil,会出现野指针(与weak的区别)

weak:弱

1.弱指针,修饰对象使用,不可用于数据类型(int,float...)

2.weak修饰时,计数器不会+1,直接赋值

3.weak是为了打破循环应用而生,常用于修饰Block,不会对block内的使用对象的引用计数+1,因此不会导致内存泄漏

4.他的引用对象被销毁时,指针会指向nil,不会出现野指针

strong:强

1.强指针,直接赋值,并且计数器+1

2.在ARC中代替了retain的作用

retain:保持

1.release 旧对象( 旧对象计数器 -1 ) , retain 新对象( 新对象计数器 +1 ) , 然后指向新对象 .

2.set方法如下:

if(_some != nil){

    [_some release];

};

_some = [some retain];

copy:拷贝

1.copy 在 MRC 时是这样做的 release 旧对象( 旧对象的引用计数器 -1 ) , copy 新对象( 新对象的引用计数器 +1 ) , 然后指向新对象 .(新对象是指最终指向的那个对象,不管深拷贝还是浅拷贝)

if (_dog != nil)

{

[_dog release];

}

_dog = [dog copy];

2.copy 在 ARC 时是这么干的 copy 新对象( 新对象的引用计数器 +1 ) , 然后指向新对象 

_dog = [dog copy];

3.修饰的属性本身要不可变的。例如 NSMutableArray 采用 copy 修饰 , 在addObject时会出现Crash, 因为NSMutableArray的对象在copy 过后就会变成NSArray。如果需要copy NSMutableArray对象,用:mutablecopy。

nonatomic:非原子属性

1.不对set方法加同步锁 .

2.性能好

3.线程不安全

atomic :原子属性

1.原子属性就是对生成的 set 方法加互斥锁 @synchronized(锁对象) .

@synchronized(self) { _delegate = delegate;}

2.需要消耗系统资源 .

3.互斥锁是利用线程同步实现的 , 意在保证同一时间只有一个线程调用 set 方法 .

4.其实还有 get 方法 , 要是同时 set 和 get 一起调用还是会有问题的 . 所以即使用了 atomic 修饰 还是不够安全 .

readonly (只读)

1.让 Xcode 只生成get方法 .

2.不想把暴露的属性被人随便替换时 , 可以使用 .

readwrite (读写)(默认)

1.让 Xcode 生成get/set方法 .

2.不用 readonly 修饰时 , 默认就是 readwrite .

相关文章

  • 修饰词用法

    ARC:assign、weak、strong、copy MRC:assign、retain、copy、nonato...

  • iOS 修饰词 详解

    iOS 修饰词 详解 iOS 修饰词 详解

  • 一、冗余的词汇—修饰词

    ● 修饰词冗余 意思明显重复的修饰词: 因为汉语中动词没有时态、名词没有复数而产生的多余修饰词 "a series...

  • flutter学习笔记一

    dart 修饰词-------------------------------------------------...

  • 类的复用-02

    static可以看成全局变量,不可以作为局部变量的修饰词,它不是权限访问修饰词public是权限访问的修饰词。对于...

  • 第六章:访问权限控制

    处于隔离代码的目的,java提供了访问权限修饰词。 1. 访问权限修饰词 public、protected、pri...

  • copy、strong、assign、weak修饰

    我们在创建属性时,经常使用copy、strong、assign、weak等修饰词,使用不同的修饰词,属性会存在怎样...

  • 修饰词

    名称作用 assign直接赋值,和引用计数无关,用来声明简单数据类型的属性,入int,NSInteger reta...

  • OC:基本数据类型

    类型限定修饰词 除了上图中基本类型之外,还有一些类型限定修饰词 short短型,修饰int、double; lon...

  • 对不起,我不想回家

    家是什么味道的呢? 家,最熟悉的修饰词是温馨、港湾。 童年,最熟悉的修饰词是美好、快乐。 是爸爸终于学着包好的饺子...

网友评论

      本文标题:修饰词用法

      本文链接:https://www.haomeiwen.com/subject/ysecyktx.html