zoukankan      html  css  js  c++  java
  • 多线程设置属性引发的崩溃问题

    多线程同时存和取公共变量容易导致崩溃,这个很好理解。那么只是同时调用普通的setter方法呢?

    ARC环境测试代码如下,变量都是@property属性

    对setter方法进行加锁就可以避免崩溃

    MRC测试代码

    一个特例:

    字符串是族类,有  如下三种子类

    • NSCFConstantString: 字符串常量,放在常量区,对其retain或者release不影响它的引用计数,程序结束后释放。用字面量语法创建出来的string就是这种,比如str = @"1234"

    • NSTaggedPointerString: Tagged Point,标签指针,苹果在64位环境下对NSString和NSNumber做的一些优化,简单来说就是把对象的内容存放在了指针里,这样就不需要在堆内存里在开辟一块空间存放对象了,一般用来优化长度较小的内容.对于NSString,当非字面量的数字,英文字母字符串的长度小于等于9的时候会自动成为NSTaggedPointerString类型。NSTaggedPointerString也是不会释放的,它的内容就在本身的指针里。比如str = [NSString stringWithFormat:@"1234"]
    • NSCFString: 这种string就和普通的对象很像了,储存在堆上,有正常的引用计数,需要程序员分配释放。比如str = @"1234".mutableCopy
  • 相关阅读:
    数据库入门
    小米笔试题
    苏宁笔试:UML类图中的关系
    动态规划
    快手笔试题
    二叉树与双向链表的转换
    招银网络科技笔试题
    map的运用
    string类型的常用方法
    string类型和int类型之间的转换
  • 原文地址:https://www.cnblogs.com/zhangmaliang/p/6483507.html
Copyright © 2011-2022 走看看