OC语言大总结(上)
知识点 |
注意事项 |
面向对象编程 |
OOP(Object Oriented Programming) |
面向对象语言 |
C++,Java,C#,OC,Swift |
概念 |
类,对象,封装,继承,多态... |
面向过程编程 |
分析解决问题的步骤,实现函数,依次调用 |
面向对象编程 |
分解问题组成的对象,协调对象间的联系和通信,解决问题. |
面向过程以过程为编程中心,面向对象以对象为编程中心. |
|
面向对象编程设计 |
1.分析涉及到的对象.2.根据功能定义类.3.使用对象的功能完成程序 |
类和对象 |
1.类和对象是面向对象的核心.2.类是对象的类型.3.对象是类的实例.4.万事万物皆对象. |
OC中类的定义 |
1.面向对象编程中使用对象完成程序.2.开发中:先定义类,再创建对象,然后适用对象.3.定义类包含两部分:接口部分和实现部分.分开写(1.接口部分:对外声明类的特征和行为.2.实现部分:对内实现行为.) |
接口部分 |
1.接口部分标志:@interface...@end2.作用:声明类的实例变量(特征)和方法(行为).3.包含内容:类名,父类名,实例变量,方法等. |
实现部分 |
1.实现部分标志:@implementation...@end.2.作用:实现方法,即实现类的行为. |
类和文件 |
.h称为接口文件或头文件,.m称为实现文件 |
创建对象 |
1.创建对象分两步:分配内存空间和初始化.2.分配内存空间:根据类中声明的实例变量为对象分配内存,并返回首地址.3.初始化:为对象的实例变量设置初始值. |
创建对象 |
+(id)alloc;(+,表示这个方法属于类,只能类执行,id返回值类型,表示任意类型的对象)-(id)int;-表示这个方法属于对象,只能对象执行.id返回值类型,表示初始化完成的对象. |
使用对象 |
指针存储对象的首地址,代指对象. |
简单方法 |
OC中的方法分两种:类方法和实例方法. |
类方法 |
只能类使用.例如:+(id)alloc,注意:类方法中不能使用实例变量. |
实例方法: |
只能对象使用,例如-init |
setter和getter |
为实例变量赋值方法称为setter,读取实例变量的方法称作getter(访问器); |
知识点 |
注意事项 |
继承 |
面向对象的语言提供了继承语法,能够大大简化代码,把公共实例变量和方法写在父类里,子类只需要写自己独有的实例变量和方法.继承即能保证类的完整,又能简化代码.父类可以有多个子类,子类只可以有一个父类.OC里边继承是单向的,不能相互继承.继承具有传递性,子类能继承父类全部的特征和行为. |
继承的特点 |
OC只允许单继承.没有父类的类称为根类,OC中的根类是NSobject.如果父类的方法不满足子类的需求,子类可以重写父类的方法.继承具有传递性 |
继承中方法的执行 |
逐级向上,找到就执行,找不到就崩溃 |
super |
1.super是编译器指令,并非类或者对象.2.作用:给super发消息,执行父类中对应的方法.3.子类可以重写父类的方法,子类既可以有自己的实现,又有父类继承中的实现,如果想使用父类的实现,需要向super发消息. |
初始化方法 |
1.创建对象分两步:分配内存,初始化.2.初始化方法的主要作用是:为某些实例变量赋值.3.初始化方法在整个对象生命周期里只使用一次.3.父类中声明了公共的实例变量.作为父类也应该有自己的初始化方法,为这些公共实例变量赋初值.4.子类定义了除父类公共实例变量外的实例变量,在自身的初始化方法中,优先向super发送init消息,初始化公共变量,初始化成功后,再初始化自身特有变量,从而完成自身全部实例变量的初始化. |
初始化过程 |
1.执行父类中实现的初始化方法(向上递归到NSObject类中的初始化方法).2.从根类NSObject开始执行初始化方法3.判断父类中的初始化是否成功,即self是否存在.4.完成对象的初始化设置,返回对象.5.初始化子类实例变量. |
初始化方法特征 |
1.初始化方法是”—”号方法.2.以init开头.3.可以带0到多个参数.4.返回值是id或者instancetype类型.5.内部实现:先执行super的初始化方法,再初始化自身变量,最后returnself |
便利构造器 |
1.便利构造器在初始化方法的基础上前进了一小步,封装了对象的创建过程.2.便利构造器以”+”方法,返回本类型的实例对象,方法名以类名开头.3.可以有0到多个参数.4.内部实现:封装了alloc和初始化方法,使用起来更加方便. |
日期 |
任务 |
setter和getter方法 |
setter是赋值方法,getter是取值方法 |
属性 |
属性是Objective-C2.0定义的语法为实例提供了setter和getter方法的默认实现,能在一定程度上简化程勋代码,并且增增强实例变量的访问安全性 |
属性的声明 |
使用@property声明属性,相当于在@interface里声明了两个方法(setter和getter) |
属性的实现 |
使用@synthesize实现属性,相当于在@implementation中实现了两个方法setter和getter |
属性的属性 |
为属性提供了一些关键字用以控制setter,getter的实现细节,这些关键字称为属性的属性(attribue),一共有三大类attribue |
属性的属性 |
第一类:读写性控制(readonly,readwrite)readonly只声明getter方法,无setter方法,readwrite告诉编译器即声明setter又声明getter |
nonatomic |
程序开发过程中,setter和getter处处都在用,如果使用atomic,需要不断地队setter,getter加锁解锁以保证线程访问安全,会很占用系统资源,降低系统性能.通常设置为nonatomic,某些属性需要线程安全时,才定义为atomic |
属性的属性 |
第三类:语义设置assign,retain,copy,使用assign修饰属性时,setter,getter内部实现是直接赋值 |
点语法 |
点语法是Objective-C2.0定义的语法格式,提供了一种便捷的属性访问方式.凡是符合系统默认setter,getter书写格式的方法都可以使用点语法 |
知识点 |
注意事项 |
苹果帮助文档的使用(文档的基本信息) |
Inherits from 继承自; Conforms to 遵循什么协议; Framework 属于哪个框架 ; Availability 什么时候可用的; Declared in 声明在什么头文件里 ; Related documents 相关文档; Sample code 示例代码 |
字符串 |
c语言中,字符串是由char(ASCII)字符构成。 oc中,字符串是由unichar(unicode)字符构成 oc中,字符串分为不可变字符串和可变字符串。 不可变字符串一经创建,内容和长度不可修改可变字符串创建之后,长度和内容可修改。 |
不可变字符串的创建 |
实例方法: —initWithString: —initWithFormat: 便利构造器: +stringWithString: +stringWithFormat: |
字符串的常用方法 |
字符串分割 ; 字符串拼接; 字符串替换; 字符串比较 |
字符串分割 |
字符串分割: -substringToIndex: -substringFromIndex: -substringWithRange: |
字符串拼接 |
字符串拼接:-stringByAppendingString: |
字符串替换 |
字符串替换: —stringByReplacingCharactersInRange:withString: —stringByReplacingOccurrencesOfString:withString: |
字符串比较 |
—isEqualToString: |
可变字符串(NSMutableString) |
NSMutableString继承于NSStringNSMutableString创建出来的字符串,是一个动态的可变字符串,可以对其进行增删改查. |
可变字符串(NSMutableString)的创建 |
实例方法: —initWithString: 便利构造器: +stringWithFormat: +stringWithString: |
NSMutableString的方法 |
字符串拼接 —appendString: 字符串插入—insertString:atIndex: 字符串删除—deleteCharactersInRange: |
字符串小结 |
不可变字符串的修改操作,本质就是得到一个新的字符串。 不可变字符串的修改方法以string开头,有返回值。 可变字符串的修改方法没有返回值,修改原字符串。 |
数值对象的作用 |
数值对象可以完成标量(int,float,结构体,指针等)与对象类型的相互转换。 |
数值对象(NSNumber)常用方法 |
基本类型(int,float)转换成对象类型; 对象类型转换成基本类型(int,float)。 +numberWithInt: +numberWithDouble: —intValue —doubleValue |
数值对象(NSValue)常用方法 |
NSValue是NSNumber的父类 结构体转换为NSValue类型对象 NSValue类型对象转换为结构体 +valueWithRange: +valueWithPointer: —rangeValue —pointerValue |
OC语言大总结(上)相关推荐
- “译见”跨语言大数据渠道生态 上亿市场即将开启
2016年11月18日,2016"赋能译见"渠道招商大会在京圆满落幕.来自全国近二十个领域的上百家企业盛情赴会,共谋跨语言大数据未来发展.会上,中译语通科技(北京)有限公司(以下简 ...
- 大一上学期C语言大作业—森林冰火人
C语言大作业-森林冰火人 大作业简介 第三方库 界面图片切换 冰火娃动作图片切换 冰娃火娃的跑动 地面,墙壁,冰水,火水与毒液等的判断 代码实现 头文件 变量简介 结构体及数据初始化 冰火娃图片切换 ...
- c语言brr17,奇幻新年大秀上的“主角”,OPPO R17丨R17 Pro新年版C位出道
原标题:奇幻新年大秀上的"主角",OPPO R17丨R17 Pro新年版C位出道 如何过一个既传统又新鲜的新年呢?相信每个人给出的答案都不太一样,但在OPPO看来,包含了独特的习俗 ...
- oc语言和c语言,C语言及OC语言初期学习心得
2015-7-22,周三 经过一个星期C语言的学习,对基础知识语法已经有了一定的了解和认识.同时通过这三天对OC语言的学习,更加了解编程语言都是相融相通的.虽然 OC语言的语法和之前接触的C,JAVA ...
- 什么是编程语言C语言,什么是oc语言,oc语言是c语言吗?
作为一个ObjecTIve-C的coder,我总能听到一部分人在这门语言上抱怨有很多问题.他们总在想快速学习这门语言来写一个App出来,但他们也总是联想到ObjecTIve-C看上去实在太难了或者在想 ...
- c语言用编译器求两个整数之和的代码,使用OC语言编撰两个超大数相乘或相加的算法的思路和超大正整数相乘的代码...
使用OC语言编写两个超大数相乘或相加的算法的思路和超大正整数相乘的代码 正文: 在编程中,无论是OC还是C亦或是C++语言,所声明的整数变量都会在内存中占有固定的存储空间,而这些存储空间都是固定的. ...
- 24、OC语言的动态性学习(Runtime)
文章目录 一.动态类型 二.动态绑定 三.动态加载 四.消息机制的基本原理 消息查找阶段 动态方法解析 消息转发 消息快转发 消息慢转发 消息发送以及转发机制的总结 重写respondsToSelec ...
- 大一c语言大作业课题大全,昆明理工大学大一C语言大作业题目.doc
昆明理工大学大一C语言大作业题目 综合性实践排序求平均值(包括将数拆散求最大最小值).函数ReadDat()随机产生100个存放到数组aa中00个jsSort()函数的功能是:进行降序排列.最后调用函 ...
- 大文件上传服务器:支持超大文件HTTP断点续传的实现办法
点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 来源:blog.csdn.net/ababab12345/a ...
最新文章
- Android源码开发笔记 -- Android数据库,屏幕休眠时间
- 关于dbutils中QueryRunner看批量删除语句batch
- STC89C52单片机 串口通信
- boost::mp11::mp_push_front相关用法的测试程序
- Mongodb3.4.4复制集群+分片配置文档
- 合理的嵌入式开发学习路线
- 2018年编程语言排行榜_这是2018年学习的最佳编程语言
- 怎样让计算机快速开机,怎样设置可以让电脑快速启动开机.doc
- 关于一些初级ACM竞赛题目的分析和题解(四)。
- html 透明玻璃效果图,CSS3教程实现模糊透明玻璃效果
- word文档分节后 如何删除某一节的页码
- 多种语言画玫瑰,总有一款适合你表白
- 二进制优化(数独问题+有向图问题)
- [原题复现]HCTF 2018 Warmup
- 什么是Chrome稳定版,Beta版,Dev版和Canary版发布渠道?(转载)
- matlab 实现完整的正弦波信号发生器
- 《这一代人的学习》观看笔记
- Toronto Research Chemicals丨艾美捷 A因子分析
- 创星c1语言设置,推荐款中学生用的老年机
- Win7的最常用快捷键
热门文章
- PHP exec xargs 不执行,关于 ‘--exec’ 参数( find 命令)及介绍 ‘xargs ’命令区别(新版)...
- HDLBits 系列(34)Serial two's complememter(Mealy and Moore FSM)
- MapReduce 概述
- js中给数组中对象去重
- 详解vue组件的is特性:限制元素动态组件
- Oracle树查询总结
- 一文读懂比特币UXTO,TA其实没那么神秘!
- Swift教程之类和结构体
- 25.EXTJS 主页面的jsp
- extern C __declspec(dllexport) __declspec(dllimport) 和 def