@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应用开发笔记(一)相关推荐

  1. 斯坦福公开课第6课笔记

    在faceview里加入委托,让faceview可以获得数据,也就是笑脸的程度.同时controller把自己设为被委托者,实现faceviewdatasource协议里smileforfacevie ...

  2. 斯坦福大学公开课:iPhone开发教程2010年冬

    2019独角兽企业重金招聘Python工程师标准>>> 斯坦福大学公开课:iPhone开发教程2010年冬 http://v.163.com/special/opencourse/i ...

  3. iOS工程开发笔记二

    iOS工程开发笔记<二> 在Xcode 4, 5的模板工程中可以看到Precompile Prefix Header,但是在Xcode 6被去除了. Xcode 6去掉Precompile ...

  4. 【斯坦福公开课-机器学习】1.机器学习的动机和应用(吴恩达 Andrew Ng)

    文章目录 0三个目标 0先修课程要求 基本工具 1-网址 2-邮箱 3-本系列课程链接 1机器学习的定义 1-1非正式定义 1-2正式的定义 2监督学习(Supervised Learning) 2- ...

  5. 【Mechine Learning】斯坦福公开课学习笔记1

    很早开始接触机器学习的概念,在一些比赛中调用过OpenCV的级联分类器函数做图像识别,但是一直以来都没有去了解其基本算法,因此在Coursera里参加斯坦福大学Professor Andrew Ng的 ...

  6. 【原】机器学习公开课 目录(课程笔记、测验习题答案、编程作业源码)...持续更新......

    之前看过的机器学习课程.本文是相关课程笔记.习题答案.作业源码的电梯. 1 Coursera 斯坦福机器学习课程,Andrew Ng 1.1 说明 课程地址和软件下载 Coursera连接不上(视频无 ...

  7. Open SAP 上 SAP Fiori Elements 公开课第一单元学习笔记

    Open SAP 课程地址 这门公开课的教学大纲: 第一单元:Painting the big picture 本课程将使用 SAP Fiori Elements 开发一系列的应用,如下图所示: Th ...

  8. 初探Vue3.0魅力 - 李游Leo公开课(2020-4-22) 笔记

    其他参考资料 B站 该教学视频资源   =>  传送门 李游Leo 老师的公开课 做的笔记 安装 npm 参考手顺 安装结果 安装cnpm手顺 clone 下来 vue创造者的 demo版本 g ...

  9. 斯坦福公开课 密码学 cryptography 1 思维导图

    本文是根据Stanford Univ. 公开课密码学1的整理而成的思维导图,该课程由大名鼎鼎的Dan Boneh教授的. 本人特别推荐这门公开课.虽然他讲话很快,但是语言表述清晰,而且很大部分已经有中 ...

最新文章

  1. plsq如何快捷整理代码_PLSQL Developer使用技巧整理(转)
  2. promise 实现依次循环 请求数据
  3. JUC并发编程七 并发架构--wait/notify
  4. React开发(132):ant design学习指南之form中控制展开和关闭逻辑
  5. 计算机数日期,计算机如何计算两个日期之间的天数
  6. Linux下安装ElasticSearch-head插件
  7. 中国风冬日节日必备梅花PNG免扣素材
  8. 组合算法 C++高效实现 (二进制辅助法)
  9. 渠道下沉 阿里争食社区经济最后一公里
  10. 编写可靠shell脚本的八个建议
  11. java游戏开发入门(一) - HelloWorld
  12. 关于1stopt的补充说明
  13. C++ “电子宠物游戏”
  14. windows磁盘管理压缩卷只能压缩一部分的问题解决办法
  15. 如何搭建内测托管平台?有可以直接用的内测托管平台吗?
  16. 主动降噪(ANC)算法开发参考书目
  17. 小白学java的一些忠告 第一季
  18. 取消福昕阅读器的小手的向下的箭头
  19. 华为浏览器html页样式没了,华为TE40web页面无发登录如何解决?
  20. 计算机软件技术基础复习

热门文章

  1. 萌新带你开车上p站(终极番外)
  2. Akka源码分析-FSM
  3. Simulink-过零检测与代数环
  4. 什么是服务器和服务器的作用
  5. 文章阅读:Social-STAGE: Spatio-Temporal Multi-Modal Future Trajectory Forecast
  6. element table 拖动改变列宽
  7. 《细说PHP(第2版)》图书信息
  8. 打开cad未响应几类问题及解决办法
  9. excel加载项不能被加载_最喜欢的免费Excel加载项
  10. 热力图原始文本数据处理_梁家俊:基于百度热力图数据的中山市中心城区空间结构分析...