OC:基础总结
OC面向对象的编程语言思想
类与对象、继承与实例化、属性点语法、内存管理、字符串、可见度。
类是一组具有相同特征和行为的事物的抽象
OC的与C相比所具有的新的特点:
定义新的类、类的实例和方法、方法的调用(称为发消息)、属性声明(以及通过他们自动合成存取方法)、静态和动态类型化、块(block)已封装的,可在任何时候执行的多段代码、基本语言的扩展,协议和类别
静态、动态方法的区别
静态方法也就是说是类的方法,不用生成对像也可以调用的,用static修饰,通过类名.方法来调用,动态方法应该是对象的方法,必须通过具体的对像来调用,可以是new生成的,也可以是工厂类生成的。
OC中的表示形式:
动态方法用 - 修饰
静态方法用 + 修饰
静态方法与动态方法 参考
description() 方法的调用,重写
一般情况下,静态方法返回的对象,都不用手动释放。
什么是 Category
Category有很多种翻译: 分类 \ 类别 \ 类目 (一般叫分类)
Category是OC特有的语法, 其他语言没有的语法(类似于C#语言中的”扩展方法”和”partial”关键字)
Category的作用
可以在不修改原来类的基础上, 为这个类扩充一些方法.
把一个类的内容分在多个不同的文件中存储
便于团队协作开发
书写格式
声明
@interface 类名 (分类名称)
@end
实现
@implementation 类名 (分类名称)
@end
分类只能增加方法, 不能增加成员变量、@property(可能编译不报错,但是运行有问题)
分类可以访问原来类中的成员变量
如果分类和原来类出现同名的方法, 优先调用分类中的方法, 原来类中的方法会被忽略
方法调用的优先级(从高到低)
分类(最后参与编译的分类优先),只要有分类就优先调用分类,不考虑与主类的编译顺序。
原来类
父类
价值所在
实现了类的相关方法的模块化
把不同的方法分配到了不同的分类文件中
可以用一个分类来代表一类功能(一个模块)
支持团队协作
可以让团队内部的不同成员 共同扩充某个类的功能
可以为系统自带的类扩充功能
为每个对象扩展一个show方法
为字符串扩展一个计算字符串中得阿拉伯数字的个数的方法
什么是类扩展
可以为某个类扩充一些私有的成员变量和方法
写在.m文件中
英文名是Class Extension
书写格式
@interface 类名 ()
@end
对比分类, 就少了一个分类名称, 因此也有人称它为”匿名分类”
block
OC中的block(代码块),非常类似于C#语言中的委托。
语法介绍:
如何声明block
无参数、无返回值
带一个参数、无返回值
带两个参数、一个返回值
Block的组成要素跟函数类似
返回值
形式参数
实际参数
Block的定义格式
返回值类型 (^block变量名)(形参列表) = ^(形参列表) {
};
没有参数可以写void,比如:int (^blockname)(void);
调用Block保存的代码
block变量名(实参);
使用typedef定义Block类型。定义好以后就可以像普通数据类型那样使用了:
typedef 返回值类型 (^block类型名称)(形参列表);
OC:基础总结的更多相关文章
- 【OC基础语法考试】
OC基础语法已经全部学完,但是这些知识只是最基础的,还有很多高级知识,这个可能需要后面慢慢的去学习才能体会到.接下来我会总结前面的OC基础语法,如果大家发现有什么不正确的地方,请指正,小弟是新生,多请 ...
- iOS 阶段学习第11天笔记(OC基础知识)
iOS学习(OC语言)知识点整理 一.OC基础知识 1)#import 用于导入头文件,预处理阶段加载引用,只加载一次. 2)OC 依赖于Foundation框架下的头文件Foundation.h, ...
- OC基础笔记目录
OC基础(1) Objective-C简介 OC和C对比 第一个OC程序 面向对象思想 OC基础(2) 类与对象 类的设计 第一个OC类 对象方法的声明和实现 类方法的声明和实现 OC基础(3) 对象 ...
- OC基础 文件管理
OC基础 文件管理 1.文件管理类NSFileManager对象的创建: NSFileManager *fm = [NSFileManager defaultManager]; 2.文件操作: (1 ...
- OC基础 NSDate
OC基础 NSDate #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @auto ...
- OC基础 NSData
OC基础 NSData 1.NSString转NSData //NSString转NSData NSString *string = @"abcd12345"; NSData *d ...
- OC基础 代理和协议
OC基础 代理和协议 1.协议 (1)oc语言中得协议:一组方法列表,不需要我们自己实现,由遵守协议的类来实现协议所定制的方法. (2)协议的使用步骤:制定协议-->遵守协议-->实现协议 ...
- OC基础 内存管理
OC基础 内存管理 我们所了解的c语言内存管理,如下: (1)c语言的内存分配:char *p = (char*)malloc(100*sizeof(char)); (2)c语言的内存释放:free ...
- OC基础 类的三大特性
OC基础 类的三大特性 OC的类和JAVA一样,都有三大特性:继承,封装,多态,那么我们就来看一下OC中类的三大特性. 1.继承 继承的特点: (1)子类从父类继承了属性和方法. (2)子类独有的属 ...
- OC基础 点语法的使用
OC基础 点语法的使用 1.创建一个Student类继承于NSObject,Student.h文件 #import <Foundation/Foundation.h> @interface ...
随机推荐
- IPython的常见用法
IPython :交互式的Python命令行 安装: pip install ipython 使用(命令行中启动): ipython # 与Python解释器的使用方法一致 IPython高级功能: ...
- 静态工具类中使用注解注入service实例
一般需要在一个工具类中使用@Autowired 注解注入一个service.但是由于工具类方法一般都写成static,所以直接注入就存在问题. 使用如下方式可以解决: /** * */ package ...
- [Vijos] 弱弱的战壕
描述 永恒和mx正在玩一个即时战略游戏,名字嘛~~~~~~恕本人记性不好,忘了-_-b. mx在他的基地附近建立了n个战壕,每个战壕都是一个独立的作战单位,射程可以达到无限(“mx不赢定了?!?”永恒 ...
- codevs——3064 求和
3064 求和 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 青铜 Bronze 题解 查看运行结果 题目描述 Description 输入一个数x(x <= ...
- datasnap使用ipv6
有些人说DATASNAP不支持IPv6,只支持IPv4. 这是不正确的. DATASNAP默认是使用IPv4在ipv6 环境下 怎样用datasnap?Params.Values['Communica ...
- arcgis安装路径的获得
//Get the ArcGIS install location string sInstall = ESRI.ArcGIS.RuntimeManager.ActiveRuntime.Path; / ...
- Delphi中匿名方法动态绑定事件
应恢弘之约,写了一个对其发布的匿名函数动态绑定到事件的封装,代码如下: type TAnonEvent=class public class function Wrap<T1,T2>(On ...
- Citrix XenServer
Citrix XenServer xenserver-test cpu特性码:77fafbff-bfebfbff-00000021-2c100800 xe snapshot-list xen还原快照 ...
- 怎样在 AutoLayout 中使用 UIScrollView (多个ContentView)
http://codehappily.wordpress.com/2013/11/14/ios-how-to-use-uiscrollview-with-autolayout-pure-autolay ...
- php 文件压缩zip扩展
<?php function addFileToZip($path, $zip) { $handler = opendir($path); //打开当前文件夹由$path指定. while (( ...