OC基础DAY01 - OC基础语法

Objective - C概述
  1. C:就是C语言
  2. Objective:面向对象的
  3. Objective-C:面向对象的C语言
OC的本质还是C语言,在C的基础之上增加了一小部分的面向对象的语法,将C语言复杂的,繁琐的语法封装的更为简单.

OC语言完全兼容C语言,也就是说在OC语言中可以写任意的C语言语句.

OC简要发展简史
  • 布莱德考克斯 Brad Cox
    • 上世界80年代初七,将C语言和smalltalk的优势设计出了Objective-C语言
    • smalltalk是为数不多的面向对象的语言之一
    • 融合C语言高级语言的特性
    • 1985年乔布斯创建NeXT公司,致力于设计经济实惠且功能强大的工作站(电脑),并选择Unix作为其工作站的操作系统
    • 后来设计出了NextStep - 使用OC语言编写的一套功能强大的界面工具包,给开发人员提供了一个工具库,给开发人员去开发带界面的软件.
    • 终于1995年NeXT公司好不容易把OC买了过来,获得了全部的商业版权.
    • 1996年苹果公司收购NeXT.其实苹果公司那时候快倒闭了,所以普遍认为是NeXT收购了苹果.NextStep得到了Mac开发人员的广泛认可,更名为Cocoa,从此OC成为开发Mac平台的主力语言.
    • 2010年随着iOS的火爆,OC又成为了iOS平台的主力开发语言.
OC的未来
  1. 苹果2014年的WWDC大会退出Swift,在2015年WWDC上宣布年底发布2.0,并且将来源!
  2. Swift的优点:快速,现代,安全,互动,且全面优于Objective-C.
  3. 按照苹果的行事风格(iPhone升级不能降级,Xcode6只能开发iOS8).
  4. OC肯定要被Swift取代
基础班学习目标
  1. 面向对象的语法
  2. 初步建立面向对象的思维
  3. 具备初级的项目需求分析能力

OC基础语法

  1. Objective-C的源文件的后缀名是.m (message)消息机制
  2. C程序的源文件的后缀名是.c
  3. main函数仍然是Objective-C的入口和出口,参数也是可有可无.返回值代表程序结束的状态.
import指令和include的区别
  1. #开头的是预处理指令,在预编译时候执行
  2. #import指令是#include指令的增强版
  3. 作用仍然是将指定的文件的内容拷贝到写指令的地方.
  4. #include指令想只被包含一次就要结合条件编译指令
  5. 用法

    <> 在编译器目录找 
    "" 在项目当前目录找
    
框架
是苹果或者第三方将程序员在开发过程中经常要用的功能写好,表贤盛一个一个类或者函数,这些类型的函数集合我们叫做框架,有点像C语言的函数库
  1. 常见的框架

    Foundation : OC中基础的语法支持,就基本的功能 输入输出 数据类型
    AVFoundation : Audio Video
    UIKit : 做界面的
    CroeLation : 定位
    ...
    
Founation框架: 基础基本的意思
提供了OC中最基础的语法支持 字符串,数组等
#import <Foundation/Foundation.h>
引入了Foundtion框架,这个框架在Foundation.h这个头文件里面
Frameworks 这个文件夹里面

1. Foundation框架里面有很多头文件
2. Foundation.h包含了Foundation框架里面所有的头文件,是一个包含其他头文件的文件.
3. <>中的/其实就是写Foundation这个文件夹中的Foundation.h的地址
4. 这就是引入框架和头文件的一点小区别

自动释放池 @auto release pool
目前不需要了解,可以把代码写在里面也可以删除掉
NSLog
  1. 这是Foundation框架中提供的一个函数
  2. 作用:是printf函数的增强版,向控制台输出信息的
  3. 语法格式

    NSLog(@"输出信息");
    
  4. 增强的地方

    2016-09-10 10:14:52.179 DAY01 - OC基础语法[768:104457] Hello,曾凡怡!
    输出这句话的时间        是哪一个程序输出的 [PID Process ID:线程ID]
                                            代表程序的进程ID 
                                            一个正在运行的程序就是进程
                                            操作系统给每一个程序编号就是PID
    1. 输出完信息以后会自动换行
    2. printf可以做的他绝对可以做.仍然可以使用printf的占位符来输出变量的值,方法一样
    3. 除了输出C语言的语句,还能输出OC新增的数据类型变量的值
    ##注意的地方##
    1. NSLog函数的第一个参数是一个字符串,这个字符串前面一定要加一个@前缀.
    2. NSLog不需要手动加\n,加了自动换行就会失效
    3. NSLog就是替换printf的,就不要再用printf了.
    使用NSLog%s输出中文字符串 是无法输出的,%@输出OC字符串就可以了
    
NSString字符串
  • C语言存储字符串的方式
    • 使用字符组.
    • 使用字符指针.
  • OC中看到了C存储字符串的烦躁,专门设计了一个类型保存字符串数据,这个类型叫做NSString

    NSStirng *str;
    专门用来存储OC字符串的地址的
    OC的字符串常量必须要使用@符号作为字符串前缀
    “jack” 这是C语言字符串常量

==必须要区分C语言字符串和OC字符串,就是加不加@前缀的区别==

  • NSLog第一个参数是一个NSString类型,所以在给串的时候一定要加@符号

    NSString *name = @”小明”;
    NSLog(@”%@”,name);

==OC当中新增的NSString类型不能用printf输出==

NS前缀是什么意思
NextStep–>cocoa–>NS前缀表示这些东西以前是NS的,也是为了防止重名
@符号的作用
  1. 将C的字符串转换为OC的字符串
  2. OC在C的基础上新增了一些关键字,新增的这些关键字大部分都是以@符号开头的.
注释
没有什么区别…

可以自己写文档注释,vvdocument一样的效果

/**
 * 功能:打印姓名
 */
void printName()
{
    NSLog(@"我赵日天不服!");
}
可以定义OC的函数吗?
也可以,定义的方式一模一样,但我们很少这样做,包括iOS开发也是
OC的运行流程
1. 编写,编译,链接的流程,差不多

  1. 创建一个.m的文件
  2. 写上符合OC语法的代码
  3. 编译

    a. 预编译:执行预处理代码
    b. 检查语法
    c. 生成.o目标文件 objective

  4. 链接

    a. 添加启动代码
    b. 链接函数

如果代码当中使用到了框架中的功能(函数或者类),在链接的时候就必须高速编译器在哪个框架当中去找.import只能让编译不报错.有函数的声明,==但是链接的时候找不到实现在哪里!==

cc main.o -framework Foundation
cc xx.o -framework 框架名称

自动找太浪费时间,框架太多了,一个个找浪费时间.

2. 和C程序各个阶段的文件后缀名对比
    源文件    目标文件   可执行文件
    .c          .o          .out
    .m          .o          .out
    除了源文件不一样,就是链接的时候要指定一下是哪个框架
3. 在Xcode中我们点击运行按钮,自动链接,不需要手动指定
新增的一些变量类型
  • OC支持C语言当中的所有数据类型
    1. 数据类型 : int double float char short. long long. long .unsigned signer
    2. 构造类型 : 数组.结构体 枚举
    3. 指针
    4. typerde定义类型
    5. void空类型
  • OC在C的基础上新增了一些类型
    1. BOOL类型
    2. Boolean类型
    3. class类型
    4. nil
    5. SEL
    6. block
BOOL是一个类型那么我们就来声明一个BOOL类型的变量
BOOL b1 = YES;
b1 = NO;
一般情况下用来保存一个条件表达式的结果.
C语言是0 和 1 来表示成立或者不成立
int num = 10;
BOOL b1 = num > 0;
成立结果是YES,否则是NO.

BOOL 类型的本质是 ==typedef signed char BOOL== 有符号的char变量,占1个字节

#define YES ((BOOL)1)
#define NO ((BOOL)0)
其实就是宏定义
YES  %d 打印出来就是1,NO就是0
Boolean类型
这个类型的变量支撑存储true或者false这两个数据.
Boolean b1 = true;
bi = false
bi = 10 > 3;
typedef unsigned char Boolean;
是一个无符号的char变量,BOOL 是一个有变量的char变量
#define true 1
#define false 0
累感无爱,其实就是C语言的 1和0
其实就是为了吸引其他平台的程序员过来,有他们熟悉的变量.我们平时用BOOL 
class类型 ( 类 )

NSString 也是一个类

nil

和NULL差不多

SEL

这个类型的变量是来保存方法的

block

用来保存一段代码


对比OC和C的运算符
OC支持C的所有的运算符,没有新增运算符~~
  1. 赋值运算符
  2. 算数运算符
  3. 复合赋值运算符
  4. 自增自减
  5. 逗号运算
  6. 关系运算符( 比较运算符 )
  7. 逻辑运算符
  8. 三元运算符
  9. 取地址运算符
  10. *指针访问运算符
  11. 位运算符
OC控制语句
OC支持所有的C语言控制语句,可以理解C语言所有的代码可以写在OC里面并且效果一致
  1. IF
  2. switch - case
  3. while do-while for
  4. 数组
  5. 指针
  6. 结构体 枚举
OC的关键字
OC支持C语言的所以的关键字.关键字在OC当中效果一样

==OC新增了一些关键字!!!==绝大部分都是以@开头的

总结
  • OC相对于C做了两件事情.
    1. 将复杂的繁琐的语法封装的更为简单.
    2. 增加了面向对象的语法

==接下来的10天都是讲面向对象==��

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值