关于object-c类目的理解

类目:为已知的类增加新的方法;

一、类目:

1. 类目方法的应用:

  • 对现有类进行扩展:比如:可以扩展Cocoa touch框架中的类,在类目中增加的方法会被子类继承,而且在运行时跟其他的方法没有区别。
  • 作为子类的替代手段:不需要定义和使用一个子类,可以通过类目直接向已有的类里增加方法。
  • 对类中的方法归类:利用catigory把一个庞大的类划分为小块来分别进行开发,从而更好地对类中的方法进行更新和维护。

2. 类目方法的局限性:

  • 无法向类目中添加新的实例变量,类目没有位置来容纳实例变量。如果想增加类的实例变量,只能通过定义子类的方式。
  • 如若,在类目中覆盖先后类的方法。这样会引起super消息的断裂,因为类目总的方法具有更高的优先级,因此,一般不要覆盖现有类中的方法。

3.类目的定义:

类目的命名规则:类名+扩展方法,如“NSString+Revert”。 类目的接口声明与类的定义十分相似,但类目不继承父类,只需要带有一个括号,表明该类目的主要用途。

NSString+myobc.h文件:

#import <Foundation/Foundation.h>

@interface NSString (myobc)

- (void)test;

@end

  NSString+myobc.m文件:

#import "NSString+Revert.h"

@implementation NSString (myobc) - (void)test{ } @end

  互联网的一点事是一个发布最新互联信息平台 www.yidin.net

时间: 2024-10-11 03:50:42

关于object-c类目的理解的相关文章

Java Object根类

Object类是Java中其他所有类的祖先,没有Object类Java面向对象无从谈起.作为其他所有类的基类,Object具有哪些属性和行为,是Java语言设计背后的思维体现. Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入.Object类没有定义属性,一共有13个方法,具体的类定义结构如下图: 1.类构造器public Object(); 大部分情况下,Java中通过形如 new A(args..)形式创建一个属于该类型的对象.

浅析Object基类提供的Virtual Object.Equals, Static Object.Equals and Reference.Equals等三个方法

当我们去查看object.cs源代码文件的时候,会发现object基类提供了三种判断相等性的方法.弄清楚每种方法存在的原因,也就是具体解决了什么问题,对我们理解.net判断对象相等性的逻辑很有帮助,下面让我们分别来看看吧! 1.Virtual Object.Equals()方法 实际上.net中提供了几种比较相等性(equality)的方法,但是最基础的方法就数object类中定义的virtual Object.Equals()了.下面让我们以一个customer类来看看该方法的实际运作. st

Object对象类

Object对象类是所有类的祖先,他是默认自动继承的 Java为什么要做一个对象类呢?对象类的目的就是归一了类型,他就是把所有的类所有的对象归纳成为 Object类型.因为对象他认为对象应该拥有一些什么方法和属性全部都定制下来.那么就也就规定了今后的都有哪些方法和属性. toString():String方法是父类留下来的一个方法,如果不重写那么就由Object来实现,如果重写那么这个方法就能写很多的东西.toString()方法其实 是用来打印一些类的信息来说明类的一些问题, toString

JavaScript es6 class类的理解。

在本篇文章我将会把我对JavaScript  es6新特性class类的理解.本着互联网的分享精神,我就将我自己的理解分享给大家. 使用es写一个类(构造函数) 在es5中大家一般都这么写一个类(构造函数) 另外需要注意,class类不会被提升. // 创建一个User构造函数 function User(name, age) { this.name = name; this.age = age; } // User构造函数的静态方法. User.getClassName = function

关于FBO(FrameBuffer Object)的一些理解

先来整理下本人对FBO的理解.FBO是FrameBuffer Object的首字母简称.翻译过来就是帧缓冲区的意思.根据我的理解,OpenGL作为图形API,可以看做是画笔,帧缓冲区可以比作画布.我们使用OpenGL在帧缓冲区上“作画”(渲染). 首先,我们需要建立OpenGL Context,即获得一套“作画”的工具.以Win32 OpenGL为例,我们需要如下流程去建立一个标准的OpenGL Context: 1.创建一个窗口类(WNDCLASS/WNDCLASSEX). 2.注册窗口类(R

ThreadLocal类深刻理解

synchronized这类线程同步的机制可以解决多线程并发问题,在这种解决方案下,多个线程访问到的,都是同一份变量的内容.为了防止在多线程访问的过程中,可能会出现的并发错误.不得不对多个线程的访问进行同步,这样也就意味着,多个线程必须先后对变量的值进行访问或者修改,这是一种以延长访问时间来换取线程安全性的策略. 而ThreadLocal类为每一个线程都维护了自己独有的变量拷贝.每个线程都拥有了自己独立的一个变量,竞争条件被彻底消除了,那就没有任何必要对这些线程进行同步,它们也能最大限度的由CP

System.Object 基类

System.Object 基类 System.Object在.Net中是所有类型的基类,任何类型都直接或间接地继承自System.Object.没有指定基类的类型都默认继承于System.Object. 基类特性 正由于所有的类型都继承于System.Object.因此,所有的类型都具有下面这些特性: GetType()方法,获取对象的类型. Equals.ReferenceEquals和==,判断对象是否相等. ToString()方法,获取对象的字符串信息,默认返回对象带命名空间的全名.

伪元素、伪类基础理解

前几天同事问我css中单冒号和双冒号是什么意思,我也模糊得很,只有个笼统的概念就是:伪元素和伪类.一直以为,页面布局中很少使用到伪类,结果细细研究发现我们经常使用的hover就是一个最简单的伪类,顿时觉得自己太OUT了,紧跟着这两天都在看这些东西,其实伪类最简单的理解就是用于向某些选择器添加特殊的效果. 具体伪类.伪元素有哪些我就不一一列举,在w3c中列举的很清楚.我主要写写应用的实例. 1.来个简单的,咱们最常用到的向超链接添加不同的颜色: <html> <head> <m

对于伪类的理解 :first-child

今天看到伪类 :first-child;发现自己对于伪类的理解又有偏差,这里用代码说明一下 代码如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> span:first-child{ color: red; background-color: re