美文网首页
属性修饰词

属性修饰词

作者: 一代骄马 | 来源:发表于2018-09-07 13:02 被阅读6次

属性修饰词 - 忙人xu - 博客园

1.readwrite readonly

2.nonatomic  atomic

3.assign weak strong 

一般来说,我们都用assign去修饰OC的基本数据类型,but why?

因为assign并不会使对象的引用计数加1,也就是说如果用assign去修饰一个对象,这个对象会立即被释放,重要的是assgin在被释放的时候是不会自动置为nil,还是保留对象的指针地址,会形成野指针

此外weak必须用于修饰对象,这和他自动置为nil相关,如果强行使用weak修饰基本数据类型,编译器会报一个大大的红色错误!

4.copy mutable copy

5.copy strong

通过上述对copy与strong的描述,copy和strong最终都会返回一个引用计数为1的对象,所以单单从内存管理上说copy和strong并无任何区别,但是copy始终会返回一个不可变对象,他的值是不会被修改的。

而strong不同,被strong修饰的对象,可能会被可变对象赋值,从而在外部导致不可预料的被更改的情况。

总而言之,是否使用copy或strong还是根据具体场景来定,这里还有个性能优化的小技巧,如果copy的是可变的对象,会对它做一次完全深拷贝/不完全深拷贝,性能上是肯定不如strong直接引用计数+1来的快。

6. __autoreleasing

全局变量和实例变量是无法用__autoreleasing来修饰的,不然编译器会报错,而局部变量用__autoreleasing修饰后,其指向的对象,在当前autorelease pool结束之前不会被回收:

Objective-C之MRC、ARC模式下,属性修饰关键字strong、retain、assign、weak的区别和联系 - i左撇子 - 博客园

注意 retain在ARC中可以使用

bool 和BOOl的区别

1、类型不同

BOOL为int型

bool为布尔型

2、长度不同

bool只有一个字节

BOOL长度视实际环境来定,一般可认为是4个字节

3、取值不同

bool取值false和true,是0和1的区别

BOOL取值FALSE和TRUE,是0和非0的区别

相关文章

  • copy、strong、assign、weak修饰

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

  • 属性修饰词

    属性修饰词 - 忙人xu - 博客园 1.readwrite readonly 2.nonatomic atomi...

  • 属性修饰词

    代理最好用weak 用assign使用后不置为nil可能产生野指针 strong强引用可能造成循环引...

  • property的使用策略

    Property常用的属性 常用场景 属性中的修饰词 : assign ( ARC/MRC )1:assign用于...

  • iOS 内存管理(2) ——属性词atomic 和 nonato

    关于内存管理,其实和这个问题的关系不是特别大, 但是下一个章节,准备详细讲一下内存管理属性修饰词,而属性修饰词at...

  • C++与Java的异同

    属性 C++ 中public/privite : 修饰成员属性、成员变量、成员方法。而Java中public修饰词...

  • iOS面试题

    iOS 属性修饰词 weak,assign,strong,copy https://www.jianshu.com...

  • @property 属性修饰词

    修饰词:assign、weak、strong、retain、copy、nonatomic、atomic、reado...

  • iOS 属性修饰词

    一、 property有哪些属性修饰词? 写在后面:Q:ARC下property的默认关键字是?A:@proper...

  • ios 属性修饰词

网友评论

      本文标题:属性修饰词

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