《Objective-C基础》笔记

之前直接学习课程,总是对一些概念摸不到头脑,这些vip课程对新手理解概念有一定帮助。

1.OC简介:
Objective-C是一种面向对象的计算机语言(c语言是面向过程),1980年初布莱德-考克斯(Brad Cox)在Stepstone公司发明,基于SmallTalk-80.
1988年NeXT公司发布OC,开发环境和类库叫“NEXTSTEP”,1994年NeXT与sun公司发布标准NEXTSTEP系统,取名“openStep”。
1996年苹果公司吧nextstep/openstep用于Mac os X开发,版本和开发环境较Cocoa,用objective-c作为基础语言,开发工具为xcode何inerfaeBuilder。
2007年苹果推出Objective-C2.0,自此Objective-C是Macos和ios的开发基础语言。

2.OC特点
字符串:OC通常不适用C语言风格的字符串。大多数情况下是使用Foundation框架的NSString类型的字符串。NSString类提供了字符串的类包装,支持Unicode、printf风格的格式化工具等。他是在普通的双引号字符串前放置一个@符号。
兼容性:Objective-C是在C语言基础上增加了一层最小的面向对象语法,oc完全兼容C语言,可以在oc代码中混入C语言代码,甚至是c++代码。
类:定义类是Objective-C的基本能力。OC的类生声明和实现包括两个部分:借口部分和实现部分。
方法:定义方法也是OC的基本能力。OC中方法不是采用“.”运算符,而是“[]”运算符。有时候方法调用也成为消息发送。
属性:属性是OC2.0提出的概念,是替代对成员变量访问的“读取方法(getter)”和“设定方法(setter)”的手段。为了对类进行封装,一般情况下不直接访问成员变量,而是通过属性访问。
协议:OC中的协议类似于Java中的接口或C++的纯虚类,只有接口部分定义没有实现部分,即只有h文件没有m文件。
分类:OC中的分类是类似于继承机制的,通过分类能够扩展弗雷的功能。
3.OC文件扩展名
文件扩展名
说明
备注
.c
C语言源程序文件
.cc或.cpp
C++语言源程序文件
.h
头文件
.m
OC源程序文件
代码含有OC和C的语句
.mm
OC++源程序文件
代码含有OC和C++的语句
.o
编译之后的文件
4.OC程序的执行过程
  1. 编写源文件 .m
  2. 编译:(1)检查程序是否有错,(2)将OC源程序翻译成0和1,生成一个.o的目标文件  cc-c Myproject.m
  3. 链接:链接是将项目中所有相关联的目标文件和OC函数库组合在一起,生成一个可执行文件 .a
5.NSLog与Printf的区别
  • NSLog是Foundation框架提供的Objective-C日志输出函数,与标准C中的printf函数类似,并可以格式化输出
  • @“Hello,World”,是代表NSString字符串对象,它是Objective-C常用的字符串对象
  • 最后是return 0语句,他表示要终止main的执行,一般情况下0代表正常结束,非零代表异常情况,这是沿用了C语言的习惯
  • NSLog接受OC字符串作为参数,printf接受C语言字符串作为参数
  • NSLog输出后会自动换行,printf输出后不会自动换行
  • 使用NSLog需要#import<Foundation/Foundation.h>
  • 使用printf需要#include<stido.h>

6.#import作用

  • 更#include一样,用来拷贝某个文件的内容
  • 可以自动防止文件内容被拷贝多次
7.#Foundation框架的作用
  • 开发OC、iOS、mac程序必备的框架
  • 此框架中包含了很多常用的API(应用编程接口)
  • 框架中包含了很多头文件,若想使用整个框架的内容,包含他的主头文件即可
8.BOOL的使用
  • BOOL类型的变量有2种取值:YES、NO
  • NSLog(@“%d %d”,YES,NO)

 

 

学习的真相(罗辑思维《如何成为一个高手》观后笔记)

罗辑思维真的是一档好节目,看了罗胖的2期视频节目后,收获颇丰,特别是今天早上看的《如何成为一个高手》这期,把学习这件事来分解,道出了学习的真相。成绩好不等于学习好,那些个学习状元为什么在工作上不是特别突出,因为他们那不是“真正的学习”,工作之后的学习,才是真的学习。在听课的过程中,我也简单做了一点笔记:

1.“刻意”地练习
注意一点,不是刻苦地学习,而是刻意的学习,这里的含义就在于“意”这个字,这个意是意义是目的,学习方法百千万种,我们要把握住学习的目的和意义,才能有效的学习。拿学习“围棋”来讲,天天在网上对局杀杀杀寻求快感是提高不了水平的,“背定式、打古谱”,把一张一张的古谱练习的像把一整座楼拆成一个一个砖头那样去练习,这就是为什么有些围棋高手能同时对局好多人,打完之后却也能记得每一盘棋的路数。再一个就是学习“套路”,才能成为高手。不是永远做基础的联系,而是研究“套路”。就像公务员笔试通过之后的面试,如果继续看书看面试题是永远没有效果的,这个时候最有效的方法往往是花几千元几万元报一个培训班来学习“套路”。要知道,这个投入产出比是非常不错的。这个班,核心就是“套路”。就像自学一门技术,最好是有老师带着,你就能按“套路”去学习。

2.笔记本是大脑的外挂
钱钟书先生学富五车,阅读的书不计其数,但是藏书甚少,做的笔记却可以用火车皮来计量。包括罗胖讲万维刚的例子,罗胖试着问万维刚,你能不能每天讲一些东西,万维刚翻了翻自己的笔记,说行按现在的存货讲2年是没有问题。所以看得出来,做笔记远比单纯的读书显得更加的必要。书多不如笔记多。我自己也承认,相对于身边的人来讲,我的藏书算是比较多的,但是,很多书是好多年以前读过的,当时没有做读书笔记,读过的东西基本都忘的差不多了,再一个,买了书一直没读,虽然已经“拥有”它了,但却不是真正的拥有这本书。所以,今天做了一个决定,将书柜的里书,按照实际需求,重新读一遍,这次要认认真真的做读书笔记。因为以前读过,所以,第二次阅读,效率会大大提升,做笔记也就更从容一些。继续原来的话题,每读同一本书,每做一次笔记,其实就是在之前的理解层面上更加深入更加宽阔,用罗胖的话就是把新东西对接在原来的知识结构中,让你知识结构更加完整。这就是为什么很多高手,对自己的研究领域那么熟悉,就算出现新鲜事物也能快速学习对接到自己已有的经验当中。

3.互联网作为工具
在《浅薄》这本书中,互联网成了造成人们懒惰的罪魁祸首,但正确的理解应该是,人类在面对互联网这个工具时让自己堕落的更加浅薄。工具本身没有褒贬的意义,其意义完全是人赋予的。就像电脑的诞生,现在的人们都愿意学电脑,但在我小时候,电脑就像街边角落的游戏厅,是被大人们所不齿的,你说你学电脑一般人都会认为你不学无术。所以,工具是无罪的,罪在于人。人类不仅创造了工具,工具反过来也在塑造着人类。工具将人类分为2类,第一类人躺在工具的便利性上睡大觉去享受,第二类人是带着这个工具产生的新可能去探索文明的新边疆。所以,这就要说到第三点:学习与舒适区。

4.舒适区
人做一件事有3个阶段:舒适区、学习区、痛苦区。一个人想要学习新技术,或者掌握一门新语言,就不能待在舒适区,而是要向“未知领域”痛苦区过度,在这期间,就必然要经过学习区,所以,学习本身就是一件“不舒适”的事情。可以这么说,只要处在舒适的状态,一定不是在学习,只要是学习,就一定不舒适。

5.最好的学习方式
最好的学习方式就是有即时反馈。有一点进步或者一点错误,自己能即时得到反馈,这是最好的学习方式。所以,相较于线上网络课程,线下课程的学习效果更好,因为线下的课程一般都有带班老师随时对你的提升或者错误进行指导,而线上课程,一般是没有那么好的“服务”的。就像我现在学习的这家网络学院,带班老师完全不懂专业,纯粹就是“带班”。而真正懂技术的老师,却往往是不在线,或者答复相当延迟,甚至就回一句自己百度或者干脆不理不睬。所谓的网络学院,其实就是你花钱买个教程自己学习,这也是为什么,线下的课程收费会比线上收费高出那么多,这样看来,一切都很明白了。