IOS学习第17天
#import指令
1.#import指令?
OC中 引入头文件的预处理指令
2.在C语言中 多次 #include <"文件名"> 不会有问题
#ifndef xxx_h
#define xxx_h
#include "头文件.h"
#endif
因为C中 通过条件编译指令,来防止了重复包含
在OC中 #import指令 不需要条件编译来防止重复包含
3.格式
#import "自己的文件"
#import <系统提供的文件>
```
###NSLog函数
NSLog函数 是 printf函数的增强
1.NSLog函数 具有和printf函数基本上一样的功能
2.NSLog函数 打印C中的字符串的时候纯英文 没有问题,但是不能有中文
3.打印基数据类型 一些常量 变量 都是一样
4.增强体现在什么地方?
2016-08-14 10:28:03.946 day01课上代码[7550:655818] name = abdcef
4.1>自动智能换行:如果输出时 不加’\n’,会自动换行,如果想多换行,那么必须是两个’\n’
4.2>输出一些状态信息
输出时间信息,精确到毫秒 " 2016-08-14 10:28:03.946
输出当前的Target名字 "day01课上代码
[7550:655818] "[进程号:线程]
5.NSLog函数的格式
NSLog(@"格式控制字符串",要打印的变量或者常量);
NSLog函数还可以打印 OC中特有的一些数据类型
```
NSString
1.在OC中有大量的名字 都是以NS开头的
2.@符号的作用:
2.1> 在C字符串前加@ 是它变成OC的字符串
2.2>OC中新增的关键字 大部分都是以@开头
@interface
@implementation
@end
3.注释:OC注释和C注释完全一样
4.OC中定义C函数的方式和语法一模一样
OC程序的编译链接流程
1.创建文件 xxx.m 写代码
2.编译 ---> cc -c xxx.m
3.链接 ---> cc xxx.o -framework Foundation
4.运行 ./a.out
- OC程序和C程序各个阶段的文件后缀名对比.
源文件 | 目标文件 | 可执行文件 |
---|---|---|
C语言 | .c | .o |
OC语言 | .m | .o |
补充:删除某一个文件命令行 rm 文件名1 文件名2
BOOL与Boolean类型
"OC 支持C语言中所有的数据类型
1.C语言中数据类型
1>基本数据类型
2>构造类型
3>指针类型
4>空类型void
5>typedef定义的数据类型
2.OC中特有的数据类型
1>BOOL类型
2>Boolean类型
3>Class 类型
4>nil
5>SEL类型
6>block类型
3.BOOL类型
1>本质:
typedef signed char BOOL;
2>赋值:
BOOL rel = YES/NO;
一般来说 BOOL 类型的变量 来表示一个条件表达式的值
3>意义:
YES 代表真的 NO代表假的
BOOL 布尔类型 也可以写成bool
4.举例:写一个函数 判断 一个数是否为偶数
BOOL panDuan(int num)
{
//判断 num是不是偶数
if (num %2 == 0) {
return YES;
}else {
return NO;
}
}
Boolean类型
1.本质:
typedef unsigned char Boolean;
2.赋值:
Boolean rel = true/false;
3.意义:
true 代表真 false 代表假
4.BOOL 和 Boolean
面向过程与面向对象的优缺点分析
"强调
1.面向过程编程和面向对象编程只是解决问题的两种不同的思路,没有谁优谁劣的说法.
2.面向过程强调的是按照解决问题的逻辑,一步步实现,注重把控每一个步骤的细节.
3.面向对象强调的是解决问题找一个对应的擅长解决这类问题的"专家",这些"专家"在框架中有很多是存在了的,我们可以直接用,如果没有提供,我们就自己创造,并且以后可以复用,这样代码的可维护性就强了,
如何利用面向对象
1.遇到问题:千万不能 自己一步一步去实现
2.框架:Foundation AVFoundation CoreGraphics
3.有:直接拿过来用
4.没有:自己写框架
类和对象
类:具有相同属性,相同行为的一些事物的统称
对象:类中的一个个体,一个具体存在
- 类与对象之间的关系
一个类 可以有 多个对象
概念:
在现实中:先有对象,再有类
代码中:
先有类,通过类 可以创建对象
通过类创建对象的过程 "实例化
```
* 如何定义一个类
1.定义一个类: 类的声明(.h) + 类的实现(.m)
类的声明:
@interface 类名 : NSObject
{
//类的属性,以数据类型 变量名
数据类型1 变量名1;
数据类型2 变量名2;
//注意:属性的变量名 必须一定要以”_”开头
}
//这里写行为(方法)
@end
类的实现:(什么都没有 你也要写实现)
@implementation 类名
@end
```
- 对象的创建与使用
“`
类 可以创建对象 这个过程 “实例化
1.写一个类,学生类
属性:姓名 学号 年龄 语文成绩 数学成绩 外语成绩
//类的声明
@interface Student : NSObject
{
//属性 必须用”_”开头
NSString * _name;
int _number;
int _age;
float _ChineseScore;
float _MathScore;
float _WaiYuScore;
}
@end
//类的实现
@implementation Student
@end
2.如何根据类 来创建一个对象
格式:类名 * 对象名 = [类名 new];
如何给对象赋值?
对象名->成员变量名 = 具体数据
“注意 默认情况下 在外界是无法访问 成员变量的
解决方案: 如下 在所有成员变量前 加上一个关键字修饰 @public 即可
//类的声明
@interface Student : NSObject
{
//属性 必须用”_”开头
//因为 类的属性/成员变量 默认外界是不能访问
@public//共用,就改成 外界可以访问
NSString * _name;
int _number;
int _age;
float _ChineseScore;
float _MathScore;
float _WaiYuScore;
}
@end
```