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类型名称)(形参列表);

最新文章

  1. DataSnap 的连接事件顺序图
  2. Mysql主从配置+读写分离
  3. 【Oracle】ORACLE SQL Developer不支持JAVA版本
  4. oracle数据库事务相关【weber出品必属精品】
  5. HDSF主要节点解说(二)工作原理
  6. 用PetaPoco为ASP.NET已有数据库建模
  7. 白话ASP.NET MVC之一:Url 路由
  8. 如何从Android工程导出apk安装包
  9. vue 项目中引用百度地图
  10. JMeter中BeanShell Sampler调试分享
  11. Java常用的九种排序方法及代码实现
  12. python module install
  13. sprint站立会议
  14. c#实现统计代码运行时间
  15. Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) D 构造烟花
  16. 构造+分块思想 Codeforces Round #319 (Div. 1) C
  17. Deepin 2015 安装惠普打印机驱动
  18. Vue基础-在模板中使用过滤器
  19. 编写一个参数JavaScript函数parseQueryString,它的用途是把url参数解析为一个对象
  20. EPC sequence

热门文章

  1. 洛谷P3406 海底高铁
  2. ubuntu 12.04 64bit 安装 teamviewer 8.0
  3. Sudoku---hdu2676(数独DFS)
  4. Piggy-Bank--hdu1114(完全背包)
  5. 标准格式包含: 私有属性 无参构造 有参构造 setter 和getter 需求中的方法 需求一: 员工类Employee 属性:姓名name,工号id,工资salary 行为:显示所有成员信息的方法show() 需求二: 动物类Animal 属性:姓名name,年龄age 行为:吃饭
  6. window环境下搭建SVN服务器
  7. OCR简介及使用
  8. 深度学习笔记之关于总结、展望、参考文献和Deep Learning学习资源(五)
  9. [IT学习]华为全连接大会2017
  10. Java小白手记2:一些名词解释