1.#import
#include 增强版
可以防止被重复包含
2.框架
引进头文件
3.自动释放池
@autoreleasepool
{
}
4.NSLog( )函数
1).printf增强版
2).NSLog(@“字符串”,变量列表);
3).区别
a.输出的信息,还有非指定信息
输出的时间 + 程序的名字 + 程序的进程ID (PID) + 线程ID
b.输出完信息之后会自动换行
注意: 加 \n 原自动换行功能失效
5.OC中的字符串
1).C语言的字符串的存储方式
a.使用字符数组
b.使用字符指针来存储
2).NSString指针
专门用来存储OC字符串的地址的
NSString *str = @“jack”;
3).OC中的字符串常量必须要使用@符号作为这个字符串的前缀
@“jack” 注意:区分C串
4).输出 %@
6.NS前缀
7.@符号
1).将C字符串转换为OC字符串
2).OC在C基础上新增关键字,都以@开头
8.注释
与C一致
9.OC定义函数
与C一致
10.流程
链接函数时,若代码中使用到了框架功能,需在链接的时候,手动告诉去哪个框架找
cc xx.o -framework 框架名称
11.OC新增数据类型
1).BOOL类型(常用)
存储YES 或 NO
用来保存一个条件表达式的结果 YES就是1 NO就是0
本质是有符号的char变量
2).Boolean类型
存储true 或 false
用来保存一个条件表达式的结果 true就是1 false就是0
本质是无符号的char变量
3).class类型
4).nil
与NULL差不多
5).SEL
用来保存方法
12.OC的运算符
13.OC将C语言封装的更为简单
OC增加了面向对象的语法
14.重点
面向过程: 完成一件事,需要哪些步骤
面向对象: 完成一件事,需要找多少个对象
什么是对象?
对象是类的实例。
什么是类?
对1群具有相同特征和行为的事物的1个统称
a.类是模板,对象是根据这个类模板创建出来的
b.类是不能用的
c.类模板中有什么,对象就有什么,不会多不会少
d.类的三要素
名称
特征
行为
如何找类?
名词提炼法:分析整个业务流程中出现了哪些名词,这些名词就是类
1).定义1个类的语法
定义类的位置
main函数外面,源文件下
—>类的声明
@interface 类名 : NSObject
{
这类食物具有相同的特征
把这些特征定义为1个1个的变量
数据类型1 变量名1;
数据类型2 变量名2;
……..
}
写上这类事物具有的共同的行为,用方法表示
方法的声明
@end
—>类的实现
@implementation 类名
方法的实现
@end
注意:
类所具备的共同的特征,应该是以变量的形式声明在@interface 大括弧中
2).定义类的时候,必须要注意的几点
a.类必须要有声明和实现
b.类名 每1个单词首字母大写
c.类名不能和框架中的类的名字冲突
为了防止命名冲突,我们建议为我们的类加1个前缀
d.属性名称必须要以 _ 开头
16.对象
语法格式:
类名 * 对象名 = [类名 new];
17.使用对象
语法格式:
a. 对象名->属性名 = 数据;
也可以取值
b. (*对象名).属性名 = 数据;
默认情况下,对象中的属性是不允许在外界访问的
定义类的地方,属性前加1个修饰符 @public 就可以访问了
必须创建对象,为对象赋值
18.无参数的方法的声明
1).@interface 的大括弧外面
2).语法:
-(返回值类型)方法名称;
-(void)run;
3).将方法头拷贝到@implemetation 删除分号 补大括号
-(void)run
{
代码实现
}
4).如何调用
类中的方法不能直接调用,因为类不能直接使用
需要创建这个类的对象
对象中有类所定义的所有的东西,包括属性和方法
语法:
[对象名 方法名];
19.带有一个参数的方法的声明
1).语法
-(返回值类型)方法名 : (参数类型)形参名称;
-(void)eat : (NSString*)foodname; //传入OC字符串类型 注:不要有空格
2).带有一个参数的方法的实现
将方法头拷贝到@implementation中,删除分号,补大括弧
将方法的实现写在大括弧中
在方法实现中可以直接使用参数的值
3).调用
调用带1个参数的方法:
[对象名 方法名 : 实参];
[P1 eat:@“红烧肉”];
20.带多个参数的方法的声明
1).语法
-(返回值类型)方法名: (形参类型)形参名1 : (形参类型)形参名2 : (形参类型)形参名3;
-(int)sum:(int)num1 :(int)num2;
规范:num1后面 空格 :
2).实现
将方法头拷贝到@implementation中,删除分号,补大括弧
将方法的实现写在大括弧中
在方法实现中可以直接使用参数的值
@implementation P1
{
-(int)sum:(int)num1 :(int)num2
{
int sum = num1 + num2;
return sum;
}
}
3).调用多个参数的方法
语法:
[对象名 方法名:实参1 :实参2 :实参3];
int sum = [P1 sum:10 :20];
结论: 如果方法没有参数,那么这个方法的名字就是这个方法的名字
如果方法有参数,那么方法的名字带了冒号的
21.方法的命名规范
1).方法只有1个参数
xxxWith: //这个方法的名字叫做 xxxWith :
例: [P1 eatWith:@”红烧肉”];
xxxWithFood: // <–加强版更详细
2).方法有多个参数
xxxWith:参数1 and:参数2; //这个方法的名字叫做 xxxWith : :
例: -(int)sumWith:(int)num1 and:(int)num2
例: [P1 sumWith:10 and:20];
进一步优化:
例: -(int)sumWithNum1:(int)num1 andNum2:(int)num2;
例: [P1 sumWithNum1:10 andNum2:20];
目的:使其看起来是1条完整的语句