OC基础day01
第一个OC程序
OC与C的基本区别
- C语言的源文件 XXX.c
- OC语言的源文件 XXX.m
- 在C语言中 用printf打印信息 OC中用NSLog()打印信息
OC中的改变
- OC中 引入头文件的预处理指令 是 #import
- C语言中多次包含 #include<”文件名”>不会有问题的
#ifndef xxx_h
#define xxx_h
#include “头文件.h”
#endif - 因为在C中 通过条件编译指令,来防止重复包含
- 在OC中 #import指令 不需要条件编译来防止重复包含
- 格式
#import “自己的文件”
#import <系统提供的文件>
Foundation 框架
- 框架: 类似于 C语言中库文件(#include
NSLlog 函数
* NSLog函数是 printf 函数基本上一样的函数*
* NSLog函数 具有和printf 函数基本一样的功能
* NSLog函数 打印C中的字符串的时候纯英文没有问题 但是不能有中文
* 打印举出数据类型 一些常量 变量 都是一样
* 增强体现在
* 2016-08-14 10:28:03.946 day01课上代码[7550:655818] name = abdcef
* 自动智能换行:如果输出时 不加’\n’,会自动换行,如果想多换行,那么必须是两个’\n’
* 输出一些状态信息
输出时间信息,精确到毫秒 ” 2016-08-14 10:28:03.946
输出当前的Target名字 “day01课上代码
[7550:655818] “[进程号:线程]
* NSLog函数的格式
* NSLog(@”格式控制字符串”,要打印的变量或者常量);
NSLog函数还可以打印 OC中特有的一些数据类型
NSString字符串
- OC中的字符串的写法
“abcd” C语言中的字符串
@”abcd” OC语言的字符串 - 在IC中有一个专门的类型用来白村 IC中字符串的类型
- NSString *str = @”abcdef”;
打印OC中的字符串 用 %@ !!!!
oc 的其他基础语法
- 在OC中国有大量的名字都是以NS开头的
- @符号的作用
- 在C字符串前加@ 就是变成了OC 字符串
- OC中新增的关键字 大部分都是以@开头的
- @interface
- @implementation
- @end
- 注释: OC注释和C注释完全一样
- OC中定义C函数的方式和语法一模一样
- * OC程序的编译连接流程*
- 创建文件xxx.m 写代码
- 编译 —> cc -c xxx.m
- 链接 —> cc xxx.o -framework Foundation
- 运行 ./a.out
BOOL类型变量
- C语言中数据类型
- 基本数据类型
- 结构体类型
- 指针类型
- 空类型void
- typedef定义的数据类型
- OC中特有的数据类型
- BOOL类型
- typedef signed char BOOL;
- BOOL rel = YES/NO;
- ES 代表真的 NO代表假的
- Boolean类型
- typedef unsigned char Boolean;
- Boolean rel = true/false;
- true 代表真 false 代表假
- Class类型
- 类 类型
- nil
- 和C中的NULL很相似
- SEL类型
- 这个类型变量 可以保存一个方法
- block类型
- 这个乐行的变量 可以保存一段代码
- BOOL类型
面向对象 和面向过程
- 面向过程
- C语言是一个面向过程的语言 每一步都亲力亲为
- 面向对象
- 特征:
- 抽象
- 封装
- 继承
- 多态
- 面向过程编程和面向对象编程只能解决问题的两种不同的思路,没有谁有事谁劣势
- 面向过程强调的是按照解决问题的逻辑,一步步实现 ,注重把控每一步骤的细节
- 面向对象强调的是 解决问题找一个对应擅长解决这类问题的东西
- 特征:
- 如何利用对象
- 遇到问题 不要一步一步去实现
- 框架 Foundation AVFoundation CoreGraphics
- 有 直接用
- 没有自己 写框架
类 和对象
- 类: 具有相同属性的,共同行为的事物
- 对象: 类中的一个个体 一个具体的存在
- 类与对象的关系:
- 一个类有多个对象
- 在现实生活中 现有对象在有的类
- 在代码中 先有的类 通过类可以创建对象
- 通过类创建对象的过程叫做 实例化
- * 如何设计一个类*
- 设计类
- 类名
- 属性
- 行为(方法)
- 设计类
1.定义一个类: 类的声明(.h) + 类的实现(.m)
类的声明:
@interface 类名 : NSObject
{
//类的属性,以数据类型 变量名
数据类型1 变量名1;
数据类型2 变量名2;
//注意:属性的变量名 必须一定要以"_"开头
}
//这里写行为(方法)
@end
类的实现:(什么都没有 你也要写实现)
@implementation 类名
@end
常见错误
- 类的声明和类的实现的中,类的名字一定要一致
一个类的属性必须要写在@interface—@end 之间的一对花括号中 “写在花括号外面也不行
属性必须要以下划线开头,这是必须遵守的规范,因为后面所有的知识点的引申都是在这个基础上进行的
用指针指向一个对象的时候,要么和类名在一起,要么和指针变量在一起,要么放在类名和指针变量之间.
平常所说的对象名实际上是一个存储了对象的地址的指针变量,既然是变量,就遵守变量的命名规则.
- 规定:以字母或者下划线开头,英文字母/数字/_/$组成的
- 规范:驼峰命名法
访问对象的属性的时候是可以用 (*对象名).属性 这种语法格式,但是不要这样用,因为大家都不使用这种方式.
通过对象名访问对象的属性的时候注意正确的语法格式 对象名->属性名,注意属性名要添加下划线
默认情况在类的外部不允许直接通过对象名访问对象的属性,此时不要惊恐,只需要在定义属性的时候添加@public修饰
给对象的属性赋值的时候,实际上是给对象内部某个类型的变量赋值,此时要注意做到类型的匹配.
在类的声明中,属性只是一种描述,属性只有在对象被创建出来之后才有意义.所以在类的外部访问属性,必须要通过对象名来访问