本分享是面向有意向从事iOS开发的伙伴们,或者已经从事了ios的开发者。如果您对iOS开发有极高的兴趣,可以与我一起探讨iOS开发,一起学习,共同进步。如果您是零基础,建议您先翻阅我之前分享的iOS开发分分钟搞定C语言系列,然后在开始Objective
C语言的学习,如果您遇到问题也可以与我探讨,另外将无偿分享自己整理的大概400G iOS学习视频及学习资料,都是干货哦!可以新浪微博私信➕关注极客James,期待与您的共同学习和探讨!!由于时间有限,每天在工作之余整理的学习分享,难免有不足之处,也希望各路大神指正!
made by :极客James
一、Objective-C简介
- Objective-C是一种面向对象的计算机语言
- OC不是一门全新的语言
- C语言的基础上增加了一层最小的面向对象语法
- OC完全兼容C语言
- 可以在OC代码中混入C语言代码,甚至是C++代码
- 可以使用OC开发Mac OS X平台和iOS平台的应用程序
二、OC和C对比
1.源文件对比
(1)c语言中常见源文件.h头文件,.c文件
(2)OC中的源文件.h头文件,.m与.mm的实现文件
2.关键字对比
3.数据类型对比
4.流程控制语句对比
5.函数(方法)定义和声明对比
编写C语言函数的规律: 1.确定函数名称 2.确定形参 3.确定返回值 4.确定返回值类型
编写OC方法也有规律, 规律和C语言一模一样
6.面相对象新增特性
(1)封装性
(2)继承性
(3)多态性
7.面向对象新增语法
(1)属性生成器
@property
@synthesize
(2)分类 categroy
分类与继承
使用分类扩展类,无需子类化
(3)协议
使用协议声明方法
协议类似于C#,Java中的接口
(4)Fundation框架
创建和管理集合,如数组和字典
访问存储在应用中的图像和其他资源
创建和管理字符串
发布和观察通知
创建日期和时间对象
操控URL流
异步执行代码
8.新增异常处理
三、OC语法预览
1.关键字
基本上所有关键字都是以@开头
下面列举一些常见的关键字:
@interface、@implementation、@end
@public、@protected、@private、@selector
@try、@catch、@throw、@finally
@protocol、@optional、@required、@class
@property、@synthesize、@dynamic
self、super、id、_cmd、__block、__strong、__weak、
2.OC程序的开发过程
四、面向对象思想
面向对象是相对面向过程而言,面向对象和面向过程都是一种思想,面向过程是做任何事情都要亲力亲为,而面向对象是只关注的时解决问题需要的那些步骤。
面向对象的特点
(1)是一种符合人们思考习惯的思想
(2)可以将复杂的事情简单化
(3)将程序员从执行者转换成了指挥者
完成需求时:
先要去找具有所需的功能的对象来用。
如果该对象不存在,那么创建一个具有所需功能的对象。
这样简化开发并提高复用。
类与对象的关系
OC中创建对象比较复杂, 首先要理解一个概念叫做类.
现实生活中是根据一份描述,一份模板创建对象,编程语言也一样,也必须先有一份描述,在这个描述中说清楚将来创建出来的对象有哪些属性和行为。
如何声明一个类
注意:
1.必须以@interface开头,@end结尾
2.成员变量的声明,必须写在@interface与@end之间的大括号中
3.方法的声明必须在{}下面,不能写在{}中
如何实现一个类
注意:
1.必须以@implementation开头,@end结尾
2.类名必须和声明的一致
如何创建一个对象
特征
对象方法以-开头如 -(void)xx;
对象方法只能由对象来调用
对象方法中可以访问当前对象的成员变量
调用格式 [对象名 对象方法名];
类方法的声明和实现
1.类方法声明
格式 将对象方法-号变为+号
特征
类方法以+开头 如+(void)put;
类方法只能由类来调用
类方法中不能访问实例(成员)变量,因为类方法由类来调用,并没有创建存储空间 来存储类中的成员变量。
类方法的好处:
节省内存空间
不依赖于对象,执行效率更高;
能用类方法解决的问题,尽量使用类方法;
类方法的应用场合:
当方法内部不需要使用到成员变量(属性)时,可以改为类方法
类方法一般用于编写工具方法
对象方法和类方法区别
1.对象方法
对象方法是属于对象的
以减号-开头
只能让对象调用,没有对象,这个方法根本不可能被执行
对象方法能访问实例变量(成员变量)
对象方法中可以调用当前对象的对象方法
对象方法中可以调用其他对象的对象方法
对象方法中部可以调用类方法
2.类方法
类方法是属于类的
以加号+开头
只能用类名调用,对象不能调用
类方法中不能直接访问实例变量(成员变量)
类方法中不能直接调用对象方法,要想调用对象方法,必须创建或传入对象。
使用场合:
当不需要访问成员变量(属性或成员变量)的时候,尽量用类方法
类方法和对象方法可以同名
isa指针
每一个对象都包含一个isa指针(isa是一个指针, 占8个字节).这个指针指向当前对象所属的类。
[p eat];表示给p所指向的对象发送一条eat消息,调用对象的eat方法,此时对象会顺着内部的isa指针找到存储于类中的方法,执行。
isa是对象中的隐藏指针,指向创建这个对象的类。
通过isa指针我们可以在运行的时候知道当前对象是属于那个Class(类)的。
常见错误
1.只有类的声明,没有类的实现
2.漏了@end [email protected]和@implementation嵌套
4.成员变量没有写在括号里面
5.方法的声明写在了大括号里面
6.成员变量不能在{}中进行初始化、不能被直接拿出去访问
7.方法不能当做函数一样调用
8.OC方法只能声明在@interface和@end之间,只能实现在@implementation和@end之间。也就是说OC方法不能独立于类存在
9.C函数不属于类,跟类没有联系,C函数只归定义函数的文件所有
10.C函数不能访问OC对象的成员
11.低级错误:方法有声明,但是实现的时候写成了函数
12.OC可以没有@interface同样可以定义一个类
|
请发表评论