黑马程序员--OC自学笔记---01OC简介、面向对象、类、方法
2015-12-28 21:27
525 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1. objective-c简称obj-c、OC
2. 动态绑定、动态检查、动态链接
3. 为什么用import来引入头文件(面试题)
include和import都是引入头文件,import引入的头文件,可以防止重复包含。
Include它是使用预处理指令防止重复包含,如果没有写预处理指令,则无法防止重复包含问题。
4. Import和@class的区别(面试题)
5. Foundation/Foundation.h
1) 头文件
2)头文件的位置
Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h
3) 文件包含了其他的大量的头文件
4) 作用:把foundation.h引入了,等于把OC的库文件都引过来了
6. NSLog和printf的区别(面试题)
1) NSLog会自动换行,printf不能自动换行
2) NSLog会自动输出时间等项目信息,printf不会输出调试信息
3) NSLog函数的参数是一个NSString对象,printf是一个字符串常量指针
7. NSLog格式化输出的问题
1) OC向下兼容C语言
2) NSLog也可以像printf那样进行格式化输出:NSLog(@”%.2f,%d%c”,2.0,1,’c’);
3) 但是输出字符串时不能使用%s,而是%@:NSLog(@”%@”,”abc”);
4) 不能使用printf来输出%@类型
5) NSString是OC特有的类型,C语言不支持
8. 类的前缀NS的含义
NS来自于NeXTStep的一个软件NeXT Software,OC中不支持命名空间(namespace),NS是为了避免命名冲突而给的前缀,看到NS前缀就知道是Cocoa中的系统类的名称。
9. OC中的注释和@符号的使用
1)@“” 表示将一个C的字符串转化为OC中的字符串对象NSString
2)@标识符 表示OC中的关键字,OC中大部分关键字都是以@开头的
3)OC中的注释:
①单行注释 //
②多行注释 /* */
③文档注释
/**
*
*
*/
10. OC和C语言的差异(1)
1) 文件的差异
① C语言中的文件后缀有.c .o .out .h
② OC中的文件后缀有.h-->头文件,包含方法,属性的声明
.m—>类的实现文件,参与编译的文件,用来实现类中声明的方法
2) 数据类型差异
① C语言数据类型
② OC中的数据类型
3) 关键字差异
① C语言的关键字
② OC中的关键字
③ 注意:C语言中的关键字都可以在OC源程序中使用
OC新增的关键字在使用时,注意部分关键字以“@”开头
4) 流程控制语句:OC中并没有增加新的流程控制,提供一种增强型的for循环(for in)
if---else switch while do---while for
5) OC中函数的定义和声明的差异
+(void)test;
-(void)test;
方法声明:
-(int)sum:(int)x andY:(int)y;
方法定义:
-(int)sum:(int)x andY:(int)y{
returnx+y;
}
11. OC和C的差异(2)
1) OC新增的数据类型
① Boolean取值为true(1)或false(0)
② BOOL取值为YES(1 )和NO(0)
2) 异常捕捉机制
try{
可能发生异常的代码;
}catch(异常的具体类型){
对异常的操作;
}
finally{
不管是否有异常,都会被执行的代码;
}
12. 面向对象编程概念
大幅度提高软件项目的成功率
减少维护费
提高可移植性和可靠性
特征:封装性、多态性、继承性
13. 类
1).h类的声明文件,用于声明成员变量、方法。类的声明使用关键字@interface和@end。
注意:.h中的方法只是做一个声明,并不对方法进行实现。也就是说,只是说明一下方法名、方法的返回值类型、方法接收的参数类型而已,并不会编写方法内部的代码。
2).m:类的实现文件,用于实现.h中声明的方法。类的实现使用关键字@implementation和@end。
14. 方法
1) 方法的声明和实现,都必须以+或者-开头
2) +表示类方法(静态方法)
3) -表示对象方法(动态方法)
4) 在.h中声明的所有方法的作用域都是public类型,不能更改。
15. 成员变量(实例变量\属性)
成员变量的常用作用域有3种:
1) @public全局都可以访问
2) @protected只能在类内部和子类中访问
3) @private只能在类内部访问
16. 类的定义
1) 类的声明(规定当前类的:类名、属性、行为)
@interface 类名:父类名
{
定义类的属性;
}
类的行为;
@end
举例:
//类的行为
-(void)run;
@end
2) 类的实现(实现具体行为)
@implementation 类名
//行为的具体实现
@end
举例:
3)
17. 创建对象并访问成员变量
1) [Car new];
① 向计算机申请内存空间
② 给类中的每一个成员变量初始化值
③ 返回新申请的空间的首地址
Car *p = [Car new];
① 定义了一个Car类型的指针变量,指针变量指向新申请的内存空间
② 用Car类实例化了一个实例对象,对象的名称是p
18. 无参方法的调用
[类名或对象名 方法名]
Car *car = [Car new];
[car run];
关于对象方法:
1) 对象方法以-开头如-(void)xx;
2) 对象方法只能由对象来调用
3) 对象方法中可以访问当前对象的成员变量
4) 调用格式[对象名 对象方法名];
关于类方法
1) 类方法以+开头,如+(void)put;
2) 类方法只能由类来调用
3) 类方法中不能访问实例(成员)变量,因为类方法由类来调用,并没有创建存储空间来存储类中的成员变量
4) 调用格式:[类名 类方法名];
19. 有参方法的声明和调用
1) 声明:
-(返回值类型)方法名:(参数1类型)参数1名称 and:(参数2类型)参数2名称…;
-int(sum):(int)x and:(int)y;
方法名为:sum: and: (冒号为方法名的一部分)
2) 实例变量书写规范
int _num; 数据类型 _实例变量名;
1. objective-c简称obj-c、OC
2. 动态绑定、动态检查、动态链接
3. 为什么用import来引入头文件(面试题)
include和import都是引入头文件,import引入的头文件,可以防止重复包含。
Include它是使用预处理指令防止重复包含,如果没有写预处理指令,则无法防止重复包含问题。
4. Import和@class的区别(面试题)
5. Foundation/Foundation.h
1) 头文件
2)头文件的位置
Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h
3) 文件包含了其他的大量的头文件
4) 作用:把foundation.h引入了,等于把OC的库文件都引过来了
6. NSLog和printf的区别(面试题)
1) NSLog会自动换行,printf不能自动换行
2) NSLog会自动输出时间等项目信息,printf不会输出调试信息
3) NSLog函数的参数是一个NSString对象,printf是一个字符串常量指针
7. NSLog格式化输出的问题
1) OC向下兼容C语言
2) NSLog也可以像printf那样进行格式化输出:NSLog(@”%.2f,%d%c”,2.0,1,’c’);
3) 但是输出字符串时不能使用%s,而是%@:NSLog(@”%@”,”abc”);
4) 不能使用printf来输出%@类型
5) NSString是OC特有的类型,C语言不支持
8. 类的前缀NS的含义
NS来自于NeXTStep的一个软件NeXT Software,OC中不支持命名空间(namespace),NS是为了避免命名冲突而给的前缀,看到NS前缀就知道是Cocoa中的系统类的名称。
9. OC中的注释和@符号的使用
1)@“” 表示将一个C的字符串转化为OC中的字符串对象NSString
2)@标识符 表示OC中的关键字,OC中大部分关键字都是以@开头的
3)OC中的注释:
①单行注释 //
②多行注释 /* */
③文档注释
/**
*
*
*/
10. OC和C语言的差异(1)
1) 文件的差异
① C语言中的文件后缀有.c .o .out .h
② OC中的文件后缀有.h-->头文件,包含方法,属性的声明
.m—>类的实现文件,参与编译的文件,用来实现类中声明的方法
2) 数据类型差异
① C语言数据类型
② OC中的数据类型
3) 关键字差异
① C语言的关键字
② OC中的关键字
③ 注意:C语言中的关键字都可以在OC源程序中使用
OC新增的关键字在使用时,注意部分关键字以“@”开头
4) 流程控制语句:OC中并没有增加新的流程控制,提供一种增强型的for循环(for in)
if---else switch while do---while for
5) OC中函数的定义和声明的差异
+(void)test;
-(void)test;
方法声明:
-(int)sum:(int)x andY:(int)y;
方法定义:
-(int)sum:(int)x andY:(int)y{
returnx+y;
}
11. OC和C的差异(2)
1) OC新增的数据类型
① Boolean取值为true(1)或false(0)
② BOOL取值为YES(1 )和NO(0)
2) 异常捕捉机制
try{
可能发生异常的代码;
}catch(异常的具体类型){
对异常的操作;
}
finally{
不管是否有异常,都会被执行的代码;
}
12. 面向对象编程概念
大幅度提高软件项目的成功率
减少维护费
提高可移植性和可靠性
特征:封装性、多态性、继承性
13. 类
1).h类的声明文件,用于声明成员变量、方法。类的声明使用关键字@interface和@end。
注意:.h中的方法只是做一个声明,并不对方法进行实现。也就是说,只是说明一下方法名、方法的返回值类型、方法接收的参数类型而已,并不会编写方法内部的代码。
2).m:类的实现文件,用于实现.h中声明的方法。类的实现使用关键字@implementation和@end。
14. 方法
1) 方法的声明和实现,都必须以+或者-开头
2) +表示类方法(静态方法)
3) -表示对象方法(动态方法)
4) 在.h中声明的所有方法的作用域都是public类型,不能更改。
15. 成员变量(实例变量\属性)
成员变量的常用作用域有3种:
1) @public全局都可以访问
2) @protected只能在类内部和子类中访问
3) @private只能在类内部访问
16. 类的定义
1) 类的声明(规定当前类的:类名、属性、行为)
@interface 类名:父类名
{
定义类的属性;
}
类的行为;
@end
举例:
@interface Car:NSObject { //类的属性 intlunzi; intspeed; NSString*color; }
//类的行为
-(void)run;
@end
2) 类的实现(实现具体行为)
@implementation 类名
//行为的具体实现
@end
举例:
@implementation Car -(void)run { NSLog(@”running!”); } @end
3)
17. 创建对象并访问成员变量
1) [Car new];
① 向计算机申请内存空间
② 给类中的每一个成员变量初始化值
③ 返回新申请的空间的首地址
Car *p = [Car new];
① 定义了一个Car类型的指针变量,指针变量指向新申请的内存空间
② 用Car类实例化了一个实例对象,对象的名称是p
18. 无参方法的调用
[类名或对象名 方法名]
Car *car = [Car new];
[car run];
关于对象方法:
1) 对象方法以-开头如-(void)xx;
2) 对象方法只能由对象来调用
3) 对象方法中可以访问当前对象的成员变量
4) 调用格式[对象名 对象方法名];
关于类方法
1) 类方法以+开头,如+(void)put;
2) 类方法只能由类来调用
3) 类方法中不能访问实例(成员)变量,因为类方法由类来调用,并没有创建存储空间来存储类中的成员变量
4) 调用格式:[类名 类方法名];
19. 有参方法的声明和调用
1) 声明:
-(返回值类型)方法名:(参数1类型)参数1名称 and:(参数2类型)参数2名称…;
-int(sum):(int)x and:(int)y;
方法名为:sum: and: (冒号为方法名的一部分)
2) 实例变量书写规范
int _num; 数据类型 _实例变量名;
相关文章推荐
- 程序员装逼指南
- 漫谈程序员(十八)windows中的命令subst
- 漫谈程序员(十八)windows中的命令subst
- Hulu面试题解答——N位数去除K个数字(解法错误sorry)
- 前端面试集锦——CSS篇
- 前端开发面试题——HTML篇
- 大龄程序员的未来在何方
- 【面试题】:两水桶倒水问题
- 【面试题】:统计一串字符串中仅出现一次的第一个字符
- 前端开发面试题——HTML篇
- C#程序员经常用到的10个实用代码片段
- 互联网思维之求职信,百战百胜
- 程序员减压放松的十个网站
- 黑马程序员——Java之集合框架工具类Collections、Arrays以及Java新特性
- Java程序员必须掌握的8大排序算法
- 【转】MYSQL DBA知识了解-面试准备
- 闲着没事做:程序员的核心竞争力是什么?为什么?
- 培训机构毕业的程序员被歧视的背后逻辑
- 作为码农,我们为什么要写作
- 【备战面试之】三、依赖注入是什么?