//
// OC1.h
// OC1
//
// Created by apple on 15-8-4.
// Copyright (c) 2015年 itcast. All rights reserved.
//
#ifndef OC1_OC1_h
#define OC1_OC1_h
#endif
**********************************************************
1.【面试题】 引入头文件 为什么要用import?
include 和 import都是引入头文件
import引入的头文件,可以防止重复包含
include 它是使用预处理指令防止重复包含,如果没有写预处理指令,则无法防止重复包含问题
2.【面试题】import 和@class的 区别
3. Foundation/Foundation.h是什么
1)头文件
2)头文件的位置
3)文件中包含了其他的大量的头文件
作用:把Foundation.h引入了,等于把OC的库文件都引过来了
4. @autoreleasepool 自动释放池
5. NSLog(@"");是一个函数
作用:向控制台输出
1)NSLog 与printf的使用差异
NSLog 会自动换行 printf不会自动换行
NSLog 会自动输出时间等项目信息 printf不会输出传递信息
NSLog 函数的参数是一个NSString 对象 printf 是一个字符串常量指针
2) NSLog 格式化输出的问题
printf函数能在OC中运行 ,寿命OC向下兼容C
NSLog 也可以进行格式化输出
OC中特有的字符串表示方法
NSString *str=@"张三丰";// NSString是OC特有的 C 不能访问
NSLog(@"%@",str);
**********************************************************
1. @符号的使用
@“” 这个符号表示将一个C的字符串转化为OC中的字符串对象NSString。
@标示符 OC中大部分的关键字都是以@开头的,
2. OC中的注释
单行注释 //
多行注释 /*
注意:多行注释不能嵌套
*/
文本注释:/**
*/
条件编译的注释:
# if 0
#endif
**********************************************************
OC和C的差异(一)
1.源文件对比
C语言中 .c
.o
.out
.h
OC中 .h
.m
2.基本语法对比
1)数据类型对比
C语言: 基本类型: 整型: 短整型 short
整型 int
长整型 long
字符型 char
实型 单精度 float
双精度 double
构造类型 数组
结构体 struct
枚举类型
指针类型
空类型 void
定义类型 typedef
OC中: 基本数据类型 数值型
2)
**********************************************************
OC和C的差异(二)
1.新增数据类型介绍
1)逻辑性
(1)Boolean 用于存储真值1和假值0 一般用于程序流程控制 逻辑判断
OC 中也可以用 true 表示真 false表示假
用来存放true和false的变量 我们声明为Boolean类型
(2)BOOL 存放逻辑值的另外一种方法 它的取值 是YES 和 NO
YES 真 1
NO 假 0
2.异常捕捉方法
//注意:try catch 并不能检测所有的错误
@try {
//此处放的事有可能出错的代码
int result = a/b;
}
@catch (NSException *exception) {
//此处放 出错后 我们处理的代码
NSLog(@"exception = %@",exception);
}
@finally {
//不管出没出错,这里的代码一定会执行
printf("fengjie!\n");
}
**********************************************************
面向对象编程概念
1.编程就是将我们的思维转变成计算机能够识别的语言的一个过程
2.面向对象设计三个主要特征
封装
多态
继承
**********************************************************
类和对象
1.类(class)和对象(object)
类是具有相似内部状态和运动规律的实体的集合
对象 现实世界中各种各样的实体。可以指具体的事物也可以指抽象的事物。
消息 指对象间相互联系和相互作用的方式
2.类的构成
人的类设计,只关心3样东西:
事物名称(类名):人(Person)
属性:身高(height)、年龄(age)
行为(功能):跑(run)、打架(fight)
3.类的抽象
拥有相同属性和行为的对象都可以抽象出一个类
**********************************************************
类的声明和实现
OC中类的定义有两部分:类的声明、类的实现
1.1).h类的声明文件 使用关键字 @interface @end
.m类的实现文件 使用关键字 @implementation @end
2)方法的实现和声明都必须以+ -开头
+ 表示类方法(静态方法)
- 表示对象方法(动态方法)
3)成员变量(实例变量\属性)
成员变量的常用作用域有3种:
@public 全局都可以访问
@protected 只能在类内部和子类中访问
@private 只能在类内部访问
2.类的定义
结构体定义
struct Student{
}; ---->定义一个Student 结构体
类的定义分为两部分:
1)类的声明(规定当前类的:类名、属性、行为)
@interface 类名:父类名
{
//定义类的属性
}
//类的行为
@end
2)类的实现(实现具体行为)
@implementation 类名
//行为的具体实现
@end
**********************************************************
创建一个对象 并访问成员变量
//车的类的声明
@interface Car:NSObject
{
//类的属性
@public //公有的
int lunzi; //车的轮子
NSString *color;//车的颜色
int speed; //车的速度
}
//类的行为
@end
//类的实现
@implementation Car
//行为的具体描述
@end
在OC中用已经存在的类,如何创建一个对象?
回顾 C的结构体 结构体 如何创建结构体变量
struct Student stu;// stu 就是结构体变量
struct Student *pstu; //pstu =&stu
OC中对象的创建
[Car new];//做了3件事情
//向计算机申请内存空间
//给类中的每一个成员初始化值
//返回新申请的空间的首地址
// int *p=[Car new]; //用int 类型不同
Car *p=[Car new];
//理解方式一:
//定义了一个Car类型的指针变量
//指针变量指向新申请的内存空间
//理解方式二:
//用Car类实例化了一个实例对象,对象的名称是p
Car *car1 =[Car new]; //创建Car类型的对象 car1
//创建一个对象 实质还是指针(用指针间接访问实例变量值)
**********************************************************
无参方法声明实现及调用
@interface Car:NSObject
{
int lunzi;
int speed;
NSString *pp;
}
//行为
//车跑得方法 方法名是run
-(void)run; //定义了一个无参无返回值的方法
-(void)stop;
@end
//类的实现
@implementation Car
//方法的具体的实现
-(void)run{
NSLog(@"车跑在乡间的大道上");
}
-(void)stop{
NSLog(@"咯吱,车停了!");
}
@end
**********************************************************
有参方法声明实现和调用
1.声明和实现
C语言中 有参函数
int sum(int x,int y){
return x+y;
}
OC中的方法
-(返回值类型)方法名1:(参数类型)参数名;//有一个参数的方法
-(返回值类型)方法名1:(参数类型1) 参数名1 and:(参数类型2) 参数名2;//有两个参数
//sum-------->>OC的方法
-(int)sum:(int) x and:(int)y;//方法的声明
//有参方法使用注意:
方法的类型 对象方法
方法的返回值 int 类型
方法的参数是 x y
参数的类型 第一个int 第二个 int
方法名 sum: and: (冒号是方法名的一部分)
//方法的实现
-(int)sum:(int) x and:(int) y {
return x+y;
}
|
|