显示隐藏文件:defaults write com.apple.finder AppleShowAllFilesYES
隐藏隐藏文件: defaults write com.apple.finder AppleShowAllFiles –boolfalse
(输入指令后,一定要重新启动Finder)
关于OC考试:35分钟机试加上30分钟笔试(笔试包含2道C变成 一道OC变成 一道OC简答)
培养面向对象的思想:必须敲当天的代码,不敲代码学习下来没有效果
课后怎样去复习:
用自己理解的方式,自己思考的方式敲代码
没有印象的同学,对着老师的代码敲
什么都记不住,就直接从头到尾抄老师的代码
做笔记:学习好的同学都会有一套自己的笔记
API是什么意思?
首先OC是一个面向对象的编程语言
OC难点:
面向对象的概念
封装/继承/多态
category / protocol
foundation(重点)
常用结构体(简单)
KVC与KVO(简单)
基础班OC重点:
掌握基本的语法
基本项目的需求分析能力
面向对象的思维能力
OC与C的对比(C中的所有东西,OC中都可以用):
关键字:OC中新增的关键字大部分都以@开头
类型,新增布尔(BOOL)类型,新增BLOCK类型,新增两种指针类型class(类)和id类型,新增特殊类型(SEL/nil)
流程控制,新增"增强版for循环"
OC中的方法与C中的函数基本相同
OC中新增面向对象特征:封装 继承 多态
OC中新增面向对象的语法
新增异常处理,用于处理错误信息
#import的功能与#include的功能相同:
#include弊端:需要写头文件位置
#import优点:防止重复导入头文件,OC中引入了新的预处理指令#import来导入头文件
#import:既可以导入OC的头文件,也可以导入C的头文件
printf和NSLog的区别:
NSLog会自动换行
NSLog在输出的时候回附加一些系统信息
NSLog接收的参数不一样
试试用include导入会发生什么?事实证明include可以导入OC的头文件
Foundation.h是什么:称为主头文件,主头文件中又拷贝了这个工具箱内所有文件的头文件,我们只需要导入主头文件就可以使用这个工具箱内的所有的文件
注意点:OC完全兼容C,所以可以在OC程序中编写C语言的代码,并且可以将C语言的源文件与OC语言的源文件编译到一起,组成一个可执行文件
面向对象的基本概念:
面向对象是相对面向过程而言的
面向对象与面向过程都是一种思想
面向过程(自己买电脑):
强调的是功能行为
关注的是解决问题需要那些步骤
面向对象(托朋友买电脑):
将功能封装到对象内(朋友就是具有一定功能的对象),强调具备了功能的对象
关注解决问题需要那些对象
面向对象的特点:
是一种符合人们思考习惯的思想
可以将复杂的问题简单化
程序员从执行者转变成为指挥者
完成需求时首先要考虑的三件事:
先去寻找具备解决问题功能的对象
如果对象不存在,那么需要自己创建一个具有所需功能的对象
这样简化开发并提高代码的复用性
OC中的类的概念:用来描述一类事物,他是对象的蓝本,也就是说想要创建对象就必须先有类,并且一个类可以创建很多对象
一般情况下名词都是类:有相同(类似)属性和和行为的对象都可以抽象成为一个类,比如:开着坦克发射了一个炮弹打下来了一个飞机,这句话中的类有"坦克""炮弹""飞机".
☐分析一个类?事物名称,属性,行为
定义一个类:需要类的名称,类的属性和行为
定义一个完整的类:
@interfaceMyClass :NSObject//其中包含new方法
{
@public//属性公开,表示属性可以被修改
NSString*name;
intage;
doubleheigth;
}
- (int)sumAge:(int)num;//声明行为(声明方法)
@end
@implementationMyClass
- (int)sumAge:(int)num//定义行为的事项方式(定义方法)
{
return(age+ num);
}
@end
定义类的注意点:
默认情况下OC对象中的属性是不能直接访问的,只要让类中的属性公开,就可以通过一个指向结构体的指针来操作对象中的属性了,@public这段代码就是让一个类变为公开的类
NSObject是为了让这个类具备创建对象的能力
定义行为的注意点:谁最清楚这个行为,那么该行为就属于谁(例如电脑的开机关机,这个行为属于电脑,而不属于人)
理解:
属性:它有什么(它有哪些特征)
行为:它能什么(它有哪些功能)
通过一个类来创建一个对象:
我们通说使用new方法来通过一个类创建一个对象: 类名称 对象名称 = [类名称 new];例如:
MyClass*p = [MyClassnew];
注意点:OC中的类本质就是一个结构体,对象名称实际上是一个指针(指向结构体的指针)
OC中定义一个方法与C中定义一个函数基本一样,也分四步:
确定方法名称
确定形参列表
确定返回值
确定返回值类型
注意点:OC中定义的方法如果没有形参,那么不用写()直接写;结束就可以,因为OC中的()是专门来扩数据类型的,例如(void)
OC中的方法分为两种:类方法,对象方法,
OC中的类方法用+表示,只能由类来调用
OC中的对象方法用- 表示,只能由对象来调用
发消息:
在OC中通过类/对象来调用起方法(功能)的过程叫做给这个类/方法发消息
在OC中只要需要发消息就用[],例如: [p about]给p对象发消息调用about方法
对象方法:
特点:在对象方法中想访问该对象内的属性,可以直接写属性名称即可
方法中如果有形参,那么需要在每个参数的数据类型前面加上一个冒号:
注意点:冒号也是方法中的一部分,如果一个方法有两个形参,那么这个方法的名称后面要带两个冒号,也就是说:
sum:
sum::
这是两个不同的方法名称
类方法:
如果不想每次使用方法都需要创建对象来开辟存储空间,并且如果该方法中没有使用到属性(成员变量)那么可以把这个方法定义为类方法
类方法和对象方法的区别:
对象方法必须由对象调用,否则会报错;反之亦然
对象方法可以字节访问成员变量,类方法中不可以直接访问属性(成员变量)
类方法的优点:调用类方法的效率会比调用对象方法高(参考对象在内存中的存储情况)
类方法和对象方法可以进行相互调用(参考第一点)
4.1 对象方法中可以直接调用类方法
4.2 可以在类方法中简洁调用对象方法(但是在企业开发中千万不要这么写)
4.3 类方法中可以直接调用其他类方法
4.4 对象方法中可以直接调用对象方法
类方法的应用场景:
如果方法中没有用到属性,那么尽量使用类方法,因为类方法的效率要高于对象方法
类方法一般用来定义一些工具方法
类方法和对象方法的区别:
对象方法可以直接访问成员变量,对象方法不可以直接访问成员变量
对象方法只有对象可以调用,类方法只有类可以调用
类方法的效率要比对象方法高(参考对象在内存中的表现形式)
*对象方法与类方法可以相互调用
如何进行多文件开发,多文件开发有什么好处?
将方法的声明写在.h中,将方法的实现写在.m中,在方法中需要使用谁就导入谁的头文件
多文件开发可以提高团队的协作效率
多文件开发可以提高开发的速度
多文件开发可以提高程序的可维护性
多文件开发可以提高代码的可读性