《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)

 

 

c语言基本数据类型

1.整数类型

整数最大数:INT_MAX
长整数最大数:LONG_MAX

直接定义整数变量:int a = 10;int b = 100;时容易出现问题,
为避免风险,在定义整数变量时需明确是用4个字节还是8个字节:
4个字节:定义:int32_t a = 10;
8个字节:定义:int64_t b = 100;

2.浮点类型

同样受系统环境和编译器影响,不直接用float f = 3.14;double lf = 3.14;来定义浮点类型变量,而是用
Float32 f =3.14
Float64 lf =3.14
来定义。
固定长度的数据类型更安全更可控。

3.字符类型

定义用char, char a = ‘a’;
也可以用int8_t 来替代,int8_t ch = ‘b’;

4.字符串类型

定义用char*,char *str =”Hello World”;

5.数组

定义空字符串char str[10];,添加字符时,如果添加的字符是‘\0’,字符串添加结束,后面的添加字符值无效。

用memset(str, 0 ,10)将多余的内存清除。

一个小奖

刚刚接到极客学院老师的通知,说我在【暖秋学习笔记整机活动】中“中奖”,获得极客学院送的颈枕,心里自然是非常高兴哒。不是因为获得什么东西,而是因为能够在好多学员里被评选上,自然是非常自豪的事情。但是想想自己的学习进度,不免又感觉受之有愧了,从开始学习到现在4个月过去了,进度却是非常的缓慢,一方面是自己的效率太低,另一方面是没有掌握到合理的学习方法。

为了每一天不走马观花地走个学习的过场,得给自己定一个时间计划。现在离年底还有2个月,想办法在过农历年前之前把所有的课程学完第一遍,按照课程时间抓紧进行。年前,这就是唯一需要完成的大事。

代码的注释及在屏幕上的显示结果

代码注释:

大量的注释让你的代码清晰易读。
多行注释开始于/*,结束于*/。C语言将/*和*/中的内容都视为注释。
单行注释用//。C语言自动忽略//后的内容。
多留空白(空格和空行),提高程序的可读性。

屏幕显示结果:

一、C语言的转义序列

代码    描述
\n        换行
\a        警告(计算机铃声)
\b        退格
\t         制表
\\         反斜杠
\’         单引号
\”         双引号

双引号表示字符串的开始和结束,单引号表示字符的开始和结束,反斜杠标志着转义序列开始。

二、转换字符

转换字符     描述
%d               整数
%f                浮点数
%c               字符
%s               字符串

在printf()中用,字符串用双引号括起来,字符用单引号括起来。

 

 

init构造函数的用法

在上篇文章中提及了for循环及冒泡排序的用法,现在说明一下init构造函数的用法。

在搭建结构体中,除了直接用var定义变量,对于需要在结构体中改变值的变量,如上篇题目中求变量英语分和变量数学分的平均分,需要用init构造函数来定义:

用init构造函数对变量进行初始化。之后,运用强制转换变量类型,从Int类型强制转换为Float类型,来实现结果。更深的理解还需要在以后的学习中多练习。