小时候,我们总是对各种故事书着迷,《安徒生童话》、《一千零一夜》、《神话故事》,里面有许多我们记忆犹新的故事。记得那个在寒冷的圣诞夜里,一个卖火柴的小女孩冻死街头的故事;记得...
小时候,我们总是对各种故事书着迷,《安徒生童话》、《一千零一夜》、《神话故事》,里面有许多我们记忆犹新的故事。记得那个在寒冷的圣诞夜里,一个卖火柴的小女孩冻死街头的故事;记得...
来源:《UX Design for Mobile: Bottom Navigation》《How Do Users Really Hold Mobile Devices?》 ...
首先,我们来谈谈为什么要设计首页? 1.用户打开APP,最先看到的就是首页,首页是第一交互界面 2.首页可以告诉用户APP最为核心和重要的功能,快速了解掌握APP 3.首页是...
有一点你说的正是我顾虑的诶,*节课用的都是*易的案例,但是我们这种乙方的小公司,产品和网易的大相径庭,面对的用户群也不一样,我怕上了课,也不能学有所用。
产品经理培训到底有必要参加吗如果你着急决定自己是否应该参加产品经理培训课程,你可以直接翻到文章末尾看总结。如果有耐心,可以看我BB一下我的经历。 我自己付费参加过两次产品经理的培训。第一次是在自己还不清...
做了两年的开发,现在要转岗产品经理。刚好这几天在纠结要不要报*点学院或者*节课的课程 话说都涨价了,*点学院的要2999,*节课的要3200
产品经理培训到底有必要参加吗如果你着急决定自己是否应该参加产品经理培训课程,你可以直接翻到文章末尾看总结。如果有耐心,可以看我BB一下我的经历。 我自己付费参加过两次产品经理的培训。第一次是在自己还不清...
如果你着急决定自己是否应该参加产品经理培训课程,你可以直接翻到文章末尾看总结。如果有耐心,可以看我BB一下我的经历。 我自己付费参加过两次产品经理的培训。第一次是在自己还不清...
首先感谢行走的少年郎写的一篇文章《iOS多线程--彻底学会多线程之『GCD』》它让我对GCD的许多概念有了清晰的理解。现在打算自己再亲自写一份笔记,以助加深印象。 1、队列 ...
写的太好了 关于多线程非常全的一篇
iOS 中实现多线程的四种方案一: 多线程的基本概念1.同步与异步的概念1.1 同步 必须等待当前语句执行完毕,才可以执行下一个语句。1.2异步 不用等待当前语句执行完毕,就可以执行下一个语句。...
一: 多线程的基本概念1.同步与异步的概念1.1 同步 必须等待当前语句执行完毕,才可以执行下一个语句。1.2异步 不用等待当前语句执行完毕,就可以执行下一个语句。...
iOS代码块Block 概述 代码块Block是苹果在iOS4开始引入的对C语言的扩展,用来实现匿名函数的特性,Block是一种特殊的数据类型,其可以正常定义变量、作为参数、...
关注仓库,及时获得更新:iOS-Source-Code-AnalyzeFollow: Draveness · Github 我们在 iOS 开发中经常需要使用分类(Categ...
很少有人知道weak表其实是一个hash(哈希)表,Key是所指对象的地址,Value是weak指针的地址数组。更多人的人只是知道weak是弱引用,所引用对象的计数器不会加一...
平常写代码。我们经常会使用到MBProgressHUD,但是随着版本的更新,我发现好多属性都被废弃,这里贴上最新详解,希望能够对有需要的小伙伴有所帮助。 //hud = [[...
十分的赞 好有道理
使用atomic一定是线程安全的吗?这个问题很少遇到,但是答案当然不是。atomic在set方法里加了锁,防止了多线程一直去写这个property,造成难以预计的数值。但这也只是读写的锁定。跟线程安全其实还是差...
po主理解错了。atomic是绝对安全的。
我们知道,在64位的操作系统下,所有类型的指针,包括void * 都是占用8个字节的。超过4个字节的基本类型数据都会有线程并发的问题。
那所有的指针类型都会有这个问题。
以oc 下的 NSArray * 为例子,如果一个多线程操作这个数据,会有两个层级的并发问题
1、指针本身
2、指针所指向的内存
指针本身也是占用内存的,并且一定是8个字节,第二部分,指针所指向的内存,这个占多少字节就不一定了,有可能非常大,有可能也就1个字节
所以我们考虑NSArray * array 这个数据array 多线程操作的时候,必须分成两部分来描述,一个是&array这个指针本身,另一个则是它所指向的内存 array
大家注意下 &array 和 array 的区别 ,其实不用纠结,你就想象现在有两块内存,一块是8字节,一块n字节,8字节里面放的值,就是n字节内存的首地址,
ok 现在联系上atomic,如果用@property(atomic)NSArray *array 修饰之后,会有什么影响?网上说的很多,不再赘述,我只想从内存的角度来解释这个过程
首先第一点,你要记住,@property(atomic)NSArray *array 其实修饰的是这个指针,也就是这个8字节内存,跟第二部分数据n字节没有任何关系,被atomic 修饰之后,你不可能随意去多线程操作这个8字节,但是对8字节里面所指向的n字节没有任何限制!这就是所有网络上所说的 atomic 不安全的真相 !!!
我们来看一下,这能怪atomic? 本身你修饰的是一个指针,并且atomic 已经完美的履行了它的指责,你现在不可能对这个8字节进行无序的多线程操作,这就够了呀!atomic没有任何鸟问题。有问题的是人,你本身并未对n字节做任何的限制,所以把问题怪罪到atomic 上真的是很不合理
这个问题很少遇到,但是答案当然不是。atomic在set方法里加了锁,防止了多线程一直去写这个property,造成难以预计的数值。但这也只是读写的锁定。跟线程安全其实还是差...
在OC中,扩展一个类的方式有两种:继承与分类。 继承与分类最大的区别是,一般情况下,分类不能扩展属性,继承可以扩展属性。但有一种情况下,分类可以扩展属性,那就...