美文网首页
如下属性有什么问题

如下属性有什么问题

作者: child_cool | 来源:发表于2018-07-27 11:49 被阅读10次

@property(copy)NSMutableArray *arr;

该写法总共有两个问题

  • 1.使用该属性会崩溃
    • copy策略可以创建可变对象或不可变对象的不可变副本,对象的值不可以改变
  /// 创建并不会引起崩溃
    self.array = [NSMutableArray array];
/// 该句引起的崩溃
    [self.array addObject:@""];
* 如上使用会引起崩溃如下,明显可以看到该属性的实际类型是NSArray,值不可以改变,进行改变自然会崩溃
[__NSArray0 addObject:]: unrecognized selector sent to instance 0x6040000086b0
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArray0 addObject:]: unrecognized selector sent to instance 0x6040000086b0'
*** First throw call stack:
  • 2.性能和线程安全问题

    下面先来解释一下nonatomic与atomic的区别与作用

    * atomic 保证程序在多线程情况下,编译器会自动生成一些互斥加锁代码,避免该变量的读写不同步问题。
    * nonatomic  如果该对象无需考虑多线程的情况,加入这个属性,会让编译器少生成一些互斥加锁代码,可以提高效率
    * atomic和nonatomic区别用来决定编译器生成的getter和setter是否为原子操作,系统自动生成的 getter/setter 方法不一样。atomic提供多线程安全,是描述该变量是否支持多线程的同步访问,如果选择了atomic 那么就是说,系统会自动的创建lock锁,锁定变量。nonatomic禁止多线程,变量保护,提高性能。
    
  • 如果没有指定默认使用atomic

相关文章

  • 如下属性有什么问题

    @property(copy)NSMutableArray *arr; 该写法总共有两个问题 1.使用该属性会崩溃...

  • python 实例属性和类属性

    修改类属性会导致所有实例访问到的类属性全部都受影响,但是,如果在实例变量上修改类属性会发生什么问题呢? 结果如下:...

  • 不要在本类中覆盖静态导入的变量和方法

    如果一个类中的方法及属性与静态导入的方法及属性重名会出现什么问题呢?我们先来看一个正常的静态导入,代码如下: 很简...

  • Python报表系列_PPTX

    环境 使用说明 demo_pptx.py代码如下: 输出如下 参考文献: 有什么问题欢迎随时讨论

  • Swift 属性

    存储属性 懒加载的存储属性 console log 如下 计算属性 console log 如下 只读的计算属性 ...

  • Struct(结构体) 添加对象(objc)的坑

    一般情况下我们声明一个简单的结构体里面都是常量类型如下: 这种没什么问题但是添加对象属性是会报这种错误: 网上搜索...

  • JavaScript ----- 操作DOM对象的属性

    操作DOM对象的属性的方法有四种如下: DOM对象.属性名称 = 新值; DOM对象["属性名称"] = 新值; ...

  • Flink window机制

    问题 window是解决流计算中的什么问题? 怎么划分window?有哪几种window?window与时间属性之...

  • UICollectionViewCell的点击效果

    前言 在UITableViewCell有一个属性selectionStyle,是一个没具有属性,取值如下 其要实现...

  • spring boot 设置属性

    Spring Boot应用程序有多种设置途径。Spring Boot能从多种属性源获得属性,包括如下几处。 (1)...

网友评论

      本文标题:如下属性有什么问题

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