斯坦福公开课IOS应用开发笔记(一)
来源:互联网 发布:excel让一列数据递增 编辑:程序博客网 时间:2024/05/07 08:22
@property(strong, nonatomic) NSString *contents;
为什么是非原子而不是线程安全?
因为IOS中的多线程不是一个对象上多个线程在设置,我们通常有另一组对象,运行在另外一个线程。
使用@property时,OC会创建get方法和set方法,来自动为我们设置contents
如果不设置非原子,这里会有各种锁定代码(违背了我们希望代码越简单越好的初衷)
如果你有多线程,允许多线程访问这里的setter和getter,那就需要锁定代码,而我们不想要锁定代码——尤其是我们要自己实现setter和getter时。
但默认情况下,我们不需要自己实现setter和getter,OC会自动为我们实现
Strong、Weak属性
OC中的数据都放在堆(内存)中,OC能够自动分配以及释放内存。
那么它是如何知道何时释放内存?
OC会追踪指向强指针指向的对象,只要强指针存在,OC就会把它所指向的对象留在堆中。
而当强指针不存在时,内存会被立刻释放。
——[自动引用计数]可预见性强
弱指针则告诉OC:我有一个指针指向堆中的对象,只要还有强指针指向它就将它留在内存中,只要不再有强指针指向它,内存就会释放。
此时这个弱指针会被设置成nil(表示这个指针不指向任何东西)
在OC中,可以发消息给nil指针而不造成程序crash
将消息发送给nil指针,它显然不会执行任何代码,因为这里没有实例,而且如果有返回值它会返回0
强指针指向一个对象。
1.把强指针设置成nil,那么就没有指针指向该对象,就能释放这里的内存(OC自动释放)
2.把该指针指向另一对象,那么原对象没有指针指向,内存得以释放
weak指针的情况下,不仅是释放内存,指针还会被设置为nil
@property(nonatomic) BOOL chosen;
BOOL类型(原始类型),这些属性不需要强或弱来修饰,
它们是原始类型,没有存储在堆中。这里只是整形或浮点型,没有内存需要管理。
这里不需要强弱指针,这里不涉及到指针
@synthesize contents = _contents;
//.m文件中
//这行代码不会显示出来,但确实存在,是oc自动生成的
//分配实例变量来存储contents属性
这里,_contents是实例变量的名字
属性contents将存储于此
- 斯坦福公开课IOS应用开发笔记(一)
- 斯坦福公开课Machine Learning笔记(一)--Linear Regression
- 斯坦福大学公开课:iOS 7应用开发 (一)
- iOS 7应用开发公开课笔记 L3:Objective-C
- 【复盘】- 纸牌配对 - 斯坦福IOS公开课
- 斯坦福公开课第6课笔记
- 斯坦福机器学习公开课笔记
- 斯坦福机器学习公开课笔记7
- 机器学习斯坦福公开课学习笔记
- 斯坦福机器学习公开课笔记(七)--对机器学习应用的一些建议
- 斯坦福机器学习公开课笔记(十五)--[应用]照片OCR技术
- 斯坦福ML公开课笔记11——贝叶斯正则化、在线学习、ML应用建议
- 斯坦福机器学习公开课学习笔记(1)—机器学习的动机与应用
- 斯坦福ML公开课笔记11——贝叶斯正则化、在线学习、ML应用建议
- iOS菜鸟成长笔记(3)——斯坦福公开课学习(1)
- 斯坦福机器学习公开课笔记(一)--单变量线性回归
- 斯坦福机器学习: 网易公开课系列笔记(一)——课程简介
- 斯坦福公开课随笔
- 个人开发的第一个APP-优贝童车
- 图的出入度计算
- 贪吃——1015
- BFC 简介
- [扫描线 线段树 拓扑排序] BZOJ2584 [Wc2012]memory
- 斯坦福公开课IOS应用开发笔记(一)
- 当觉得进步不大的时候,是时候停下来思考了
- 【dp】+免费馅饼
- Linux内核分析:实验四
- .dsw和.dsp文件有什么区别?
- Makefile经典教程(掌握这些足够)
- 【Code Art / C#】文字转换成字符画
- HDOJ 2004 成绩转换
- 高效求解自然数k次幂和的方法