zoukankan      html  css  js  c++  java
  • 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类型名称)(形参列表);

  • 相关阅读:
    类的设计问题
    php数组存在重复的相反元素,去重复
    常用JS验证函数总结
    python常用模块
    re 模块
    logging 模块
    configparser模块
    python 文件处理
    第15章-输入/输出 --- 理解Java的IO流
    第10章-验证框架 --- 验证器类型
  • 原文地址:https://www.cnblogs.com/benpaobadaniu/p/4712510.html
Copyright © 2011-2022 走看看