黑马程序员-③oc基础知识
2015-01-20 14:58
190 查看
----- <a href="http://www.itheima.com" target="blank">ios培训</a>、<a href="http://www.itheima.com" target="blank">ios培训</a>、期待与您交流! ---------
1.#import的用途:
(1) 跟#include一样,拷贝文件的内容
(2)可以自动防止文件的内容被重复拷贝,不用再想#include那样用条件编译防止重复拷贝
2.#import <Foundation/NSObjCRuntime.h>
NSObjCRuntime.h中有NSLog函数的声明,NSLog输出自动进行换行
3.主头文件
(1)主头文件:最主要的头文件,名字一般跟框架名称一样,包含了框架中的所有其他头文件
(2) Foundation框架的主头文件名称就是Foundation.h
(3) 只需要包含Foundation框架主头文件,就可以使用整个框架的东西
4.运行过程
(1) 编写OC源文件:.m、.c
(2) 编译:cc -c xxx.m xxx.c
(3) 链接:cc xxx.o xxx.o -framework Foundation (只有用到了Foundation框架才需要加上-framework Foundation)
(4)运行:./a.out
(1) 类名
类名的第一个字母必须是大写,不能有下划线, 多个英文单词,用驼峰标识
(2)属性
(3)行为(功能)
类的声明与实现
完整地写一个函数:函数的声明和定义(实现)
完整地写一个类:类的声明和实现
类的声明
声明对象的属性、行为
NSObject 目的是:让Person这个类具备创建对象的能力
用来实现@inteface中声明的方法
main函数的代码分析、内存分析(对象在内存中有成员)
常见错误
只有类的声明,没有类的实现,漏了@end,@interface和@implementation嵌套,两个类的声明嵌套,成员变量没有写在括号里面,方法的声明写在了大括号里面
语法细节
(1)成员变量不能在{}中进行初始化、不能被直接拿出去访问
(2)方法不能当做函数一样调用
(3)成员变量\方法不能用static等关键字修饰,别跟C语言混在一起(暂时忽略)
(4)类的实现可用写在main函数的后面,主要在声明后面就行了
OC方法和函数的区别
方法
1.对象方法都是以减号-开始
2.对象方法的声明必须写在@interface和@end之间, 对象方法的实现必须写在@implementation和@end之间
3.对象方法只能由对象来调用,
4.对象方法归类、对象所有
函数
1.函数能写在文件中的任意位置(@interface和@end之间除外),函数归文件所有
2.函数调用不依赖于对象
3.函数内部不能调用对象的成员变量
方法名注意
(1)冒号也是方法名的一部分
(2)同一个类中不允许两个对象方法同名
OC的方法注意
(1)方法只有声明,没有实现(经典错误)
(2)方法没有声明,只有实现(编译器警告,但是能调用,OC的弱语法)
(3)编译的时候:访问没有的成员变量直接报错,访问没有的方法,只是警告
方法的声明示例
注:如果不带参数则不用使用“:”号
如果没有指定任何返回类型, 那么默认是id类型, 所有的输入参数默认也是id类型 (id类型可用来引用
任何类型的对象) 。
具有多个参数的方法:
如果只有一个参数,在: 后面声明参数的类型和名称;如果有多个参数的话,每个参数前面都要有一 个 : , 然后接着是参数类型和参数名称。
可是大家可能还是觉得很奇怪。比如上面这个例子中, otherParameter 这个是什么意思,在 objective c 中,对于有多个参数的函数,可以理解为将函数的名称拆 成了几个部分,每个部分都是对紧接着的参数的一个解释。
匿名对象
有时候利用OC创建一个对象后并没有用该对象类型的指针指向它,而是直接调用了方法或者做了其他事情,这样的对象就叫做匿名对象(没有指向它的变量名)
1.#import的用途:
(1) 跟#include一样,拷贝文件的内容
(2)可以自动防止文件的内容被重复拷贝,不用再想#include那样用条件编译防止重复拷贝
2.#import <Foundation/NSObjCRuntime.h>
NSObjCRuntime.h中有NSLog函数的声明,NSLog输出自动进行换行
3.主头文件
(1)主头文件:最主要的头文件,名字一般跟框架名称一样,包含了框架中的所有其他头文件
(2) Foundation框架的主头文件名称就是Foundation.h
(3) 只需要包含Foundation框架主头文件,就可以使用整个框架的东西
4.运行过程
(1) 编写OC源文件:.m、.c
(2) 编译:cc -c xxx.m xxx.c
(3) 链接:cc xxx.o xxx.o -framework Foundation (只有用到了Foundation框架才需要加上-framework Foundation)
(4)运行:./a.out
<span style="font-size:14px;">#import <Foundation/Foundation.h> int main() { // NSLog输出内容会自动换行 NSLog(@"第2个OC程序!!!"); return 0; }</span>类的设计:
(1) 类名
类名的第一个字母必须是大写,不能有下划线, 多个英文单词,用驼峰标识
(2)属性
(3)行为(功能)
类的声明与实现
完整地写一个函数:函数的声明和定义(实现)
完整地写一个类:类的声明和实现
类的声明
声明对象的属性、行为
NSObject 目的是:让Person这个类具备创建对象的能力
<span style="font-size:14px;">@interface Person : NSObject {// 用来声明对象属性(实例变量\成员变量,默认会初始化为0) // @public 可以让外部的指针间接访问对象内部的成员变量 @public int age; // 年龄 } // 方法(行为):方法名、参数、返回值(声明、实现) // 只要是OC对象的方法,必须以减号 - 开头 // OC方法中任何数据类型都必须用小括号()扩住 // OC方法中的小括号():括住数据类型 - (void)eat; @end</span>类的实现
用来实现@inteface中声明的方法
<span style="font-size:14px;">// 方法的实现(说清楚方法里面有什么代码) - (void)run { NSLog(@"车子跑起来了"); } @end</span>
main函数的代码分析、内存分析(对象在内存中有成员)
<span style="font-size:14px;">[Peson new]//每次都会创建出新的对象,并且返回对象的地址,那么就应该用一个指针变量保存对象的地址 Person *p = [Person new];//用一个指针变量p指向内存中的Person对象 p->age = 30;//<span style="font-family: Arial, Helvetica, sans-serif;">设置车子对象的属性</span><span style="font-family: Arial, Helvetica, sans-serif;">跟用指向结构体的指针访问结构体属性一样,用-></span></span>
常见错误
只有类的声明,没有类的实现,漏了@end,@interface和@implementation嵌套,两个类的声明嵌套,成员变量没有写在括号里面,方法的声明写在了大括号里面
语法细节
(1)成员变量不能在{}中进行初始化、不能被直接拿出去访问
(2)方法不能当做函数一样调用
(3)成员变量\方法不能用static等关键字修饰,别跟C语言混在一起(暂时忽略)
(4)类的实现可用写在main函数的后面,主要在声明后面就行了
OC方法和函数的区别
<span style="font-size:14px;">方法声明 - (void)test; - (int)test2:(int)a; 函数声明 void test3(); - (int)test(int a);</span>
方法
1.对象方法都是以减号-开始
2.对象方法的声明必须写在@interface和@end之间, 对象方法的实现必须写在@implementation和@end之间
3.对象方法只能由对象来调用,
4.对象方法归类、对象所有
函数
1.函数能写在文件中的任意位置(@interface和@end之间除外),函数归文件所有
2.函数调用不依赖于对象
3.函数内部不能调用对象的成员变量
方法名注意
(1)冒号也是方法名的一部分
(2)同一个类中不允许两个对象方法同名
OC的方法注意
(1)方法只有声明,没有实现(经典错误)
(2)方法没有声明,只有实现(编译器警告,但是能调用,OC的弱语法)
(3)编译的时候:访问没有的成员变量直接报错,访问没有的方法,只是警告
方法的声明示例
<span style="font-size:14px;">- (void) setNUmerator : (int)n</span>第一个表示方法类型,返回类型,接着是方法名,方法接受的参数,参数类型,参数名
注:如果不带参数则不用使用“:”号
如果没有指定任何返回类型, 那么默认是id类型, 所有的输入参数默认也是id类型 (id类型可用来引用
任何类型的对象) 。
具有多个参数的方法:
<span style="font-size:14px;">-/+ (return type) function_name : (parameter type) parameter1 otherParameter : (parameter_type) parameter2;</span>
如果只有一个参数,在: 后面声明参数的类型和名称;如果有多个参数的话,每个参数前面都要有一 个 : , 然后接着是参数类型和参数名称。
可是大家可能还是觉得很奇怪。比如上面这个例子中, otherParameter 这个是什么意思,在 objective c 中,对于有多个参数的函数,可以理解为将函数的名称拆 成了几个部分,每个部分都是对紧接着的参数的一个解释。
匿名对象
有时候利用OC创建一个对象后并没有用该对象类型的指针指向它,而是直接调用了方法或者做了其他事情,这样的对象就叫做匿名对象(没有指向它的变量名)
<span style="font-size:14px;">属性访问 [Car new]->speed = 200; 方法调用 [ [Car new] run];</span>
相关文章推荐
- 【黑马程序员】-OC基础知识总结
- 黑马程序员---OC基础知识③
- 黑马程序员---OC基础知识①
- 黑马程序员——OC基础学习(四)---封装,继承和多态的学习知识总结
- 黑马程序员——OC学习笔记01 OC基础知识。
- 黑马程序员---OC基础知识④
- 黑马程序员--IOS入学学习--6-OC基础知识
- 黑马程序员---OC基础知识⑦
- 黑马程序员—OC学习日记.OC基础知识
- 黑马程序员---OC基础知识⑧
- 黑马程序员——OC基础知识
- 黑马程序员—OC语言基础—基础语法知识
- 黑马程序员---OC基础知识⑤
- 【黑马程序员-学习笔记】OC-基础知识总结
- 黑马程序员 ——OC基础知识
- 黑马程序员---OC基础知识⑥
- 黑马程序员---OC基础知识②
- 黑马程序员——OC语言基础知识
- 黑马程序员__oc基础知识总结
- 黑马程序员——OC基础学习(二)---对象方法和类方法的学习知识总结