---
layout: post
title: 从一道网易面试题浅谈 Tagged Pointer
subtitle: 浅谈 Tagged Pointer
date: 2017-12-26
author: BY
header-img: img/post-bg-universe.jpg
catalog: true
tags:
- iOS
---
## 前言
这篇博客九月就想写了,因为赶项目拖了到现在,抓住17年尾巴写吧~
## 正文
上次看了一篇 [《从一道网易面试题浅谈OC线程安全》](https://www.jianshu.com/p/cec2a41aa0e7) 的博客,主要内容是:
作者去网易面试,面试官出了一道面试题:下面代码会发生什么问题?
```objc
@property (nonatomic, strong) NSString *target;
//....
dispatch_queue_t queue = dispatch_queue_create("parallel", DISPATCH_QUEUE_CONCURRENT);
for (int i = 0; i < 1000000 ; i++) {
dispatch_async(queue, ^{
self.target = [NSString stringWithFormat:@"ksddkjalkjd%d",i];
});
}
```
答案是:会 crash。
我们来看看对`target`属性(`strong`修饰)进行赋值,相当与 MRC 中的
```
- (void)setTa