`
iaiai
  • 浏览: 2181380 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Objective-C中的类目和延展

 
阅读更多
类目:为已知的类增加新的方法;延展:通知在本类的定义里使用类目来声明私有方法;

一、类目:

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

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

3.类目的定义:

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

NSString+Revert.h文件:
#import <Foundation/Foundation.h>  
  
@interface NSString (Revert)  
  
- (void)test;  
  
@end

NSString+Revert.m文件:
#import "NSString+Revert.h"  
  
@implementation NSString (Revert)  
  
- (void)test{  
}  
  
@end

二、延展:

类的延展可以看作是一种匿名的类目,类有时需要一些只为自己所见,所用的私有方法这种私有方法可以通过延展的方式来声明,延展中定义的方法在类本身的@implementation代码区域中进行实现。
@interface MyObject : NSObject  
 {       
NSNumber *number; }  
 - (NSNumber *)number;  
 @end @interface MyObject (Setter)  
 - (void)setNumber:(NSNumber *)newNumber;  
@end  
 @implementation MyObject  
 - (NSNumber *)number  
{       
return number;  
 }  
- (void)setNumber:(NSNumber *)newNumber  
{!//do something  
}  
@end

当在定义延展的时候不提供类目名时,延展中定义的方法既被视为“必须实现”的API在这种情况下,如果方法缺少实现代码,则编译器会报警告,此时方法的实现必须出现在类主体的@implementation代码块中。
分享到:
评论

相关推荐

    Objective-C语言入门教程&深入浅出,理论实践相结合.pdf

    Objective-C语言入门教程&深入浅出,理论实践相结合 Objective-C语言入门教程&深入浅出,理论实践相结合 Objective-C语言入门教程&深入浅出,理论实践相结合 Objective-C语言入门教程&深入浅出,理论实践相结合 ...

    Objective-C基础教程(入门教程).pdf

    6. 异常处理(Exceptions):在Objective-C中,可以使用@try, @catch, 和@finally语句来处理异常情况,这是C语言没有的特性。 7. 继承和多态(Inheritance, Polymorphism):Objective-C支持继承,允许创建子类继承...

    Objective-c语言学习-快速入门完整版完整版

    Objective-C是一种强大的面向对象编程语言,它是苹果生态系统中开发iOS和macOS应用程序的主要语言。本教程将通过一系列的PPT课件,引导你快速入门Objective-C,这些课件覆盖了从基础到高级的重要概念,是《iPhone与...

    Objective-C高级编程 iOS与OS X多线程和内存管理_Objective-C_ios_

    《Objective-C高级编程:iOS与OS X多线程和内存管理》是一本深入探讨Apple平台开发中的关键技术的书籍。本书主要围绕Objective-C语言在iOS和OS X操作系统上的应用,特别是针对多线程和内存管理这两个核心主题进行...

    Objective-C 2.0 运行时系统编程指南

    6. **类型编码**:讨论了Objective-C中类型编码的使用和作用。 7. **属性声明**:解释了如何声明和使用属性,特别是Objective-C 2.0中引入的新特性。 #### 运行时系统的版本和平台 Objective-C运行时系统有两个...

    windows 下搭建 Objective-C 开发环境

    尽管Objective-C主要与Apple的平台(如iOS和macOS)相关联,但有时候,出于某些原因(比如团队协作或个人偏好),开发者可能需要在非Apple的操作系统(如Windows)上构建Objective-C应用程序。本文将详细介绍如何在...

    Objective-C Runtime测试代码

    Objective-C语言的许多决策可以在编译和运行时执行。只要有可能,它是动态的。这意味着Objective-C语言不仅需要一个编译器,还需要一个运行时系统来执行编译的代码。Runtime系统是一种用于Objective-C语言的操作系统...

    Objective-C编程全解最新版.pdf.zip

    Objective-C是一种强大的面向对象的编程语言,特别是在iOS和macOS应用程序开发中占据核心地位。"Objective-C编程全解最新版.pdf.zip"这个压缩包显然包含了关于Objective-C编程的全面教程,旨在帮助开发者深入理解并...

    C语言主要知识点巩固(学习Objective-C 的前提)

    在掌握了这些C语言基础知识后,你将更好地理解和学习Objective-C,因为Objective-C是在C语言的基础上扩展的面向对象编程语言,它保留了C的大部分语法,并引入了类、消息传递等面向对象特性。因此,牢固的C语言基础...

    Objective-C程序设计 第6版 pdf

    Objective-C是一种强大的面向对象编程语言,它在Apple的Mac OS X和iOS操作系统中扮演着核心角色,用于构建高质量的应用程序。《Objective-C程序设计 第6版》是学习和深入理解这种语言的重要参考资料,旨在帮助开发者...

    Objective-C与Objective-C++的混用代码示例

    Objective-C是基于C语言的,主要用于构建iOS和macOS应用程序,而Objective-C++则是Objective-C的一个扩展,它引入了C++的特性,使得开发者可以同时利用Objective-C的动态特性和C++的面向对象编程能力。 ### ...

    Objective-C语言教程

    希望这个简单的Objective-C语言教程能够为你提供一个入门的起点。Objective-C是一种面向对象的编程语言,广泛应用于Mac OS和iOS开发。通过学习Objective-C的基本语法、类和...祝你在学习Objective-C的过程中取得成功!

    Objective-C程序设计(第4版)(全球最畅销Objective-C编程书籍)

     《Objective-C 程序设计(第4版)》已经为iOS 5和Xcode4.2中的重大变更做了全面更新,最大的改动是引入了自动引用计数(ARC),并详细说明了如何在Objective-C编程过程中使用ARC提升和简化内存管理。

    用Objective-C语言实现了各种设计模式,收集各种例子,方便大家学习和普及设计模式 .zip

    用Objective-C语言实现了各种设计模式,收集各种例子,方便大家学习和普及设计模式。.zip用Objective-C语言实现了各种设计模式,收集各种例子,方便大家学习和普及设计模式。.zip用Objective-C语言实现了各种设计...

    Objective-C2.0程序设计第二版中文版及代码

    1. **Objective-C基础**:Objective-C是在C语言基础上扩展的,添加了面向对象特性。它的基础包括类、对象、消息传递等概念。类定义了对象的属性和行为,对象则是类的实例。消息传递是Objective-C的核心,通过`...

    Objective-C.2.0 中文版.pdf & Objective-C.chm

    Objective-C是一种强大的面向对象编程语言,特别是在iOS和macOS应用开发中占据主导地位。这个压缩包包含两个关于Objective-C的学习资源:"Programming In Objective-C.chm" 和 "Programming in Objective-C.2.0 中文...

    这是一个基于Objective-C语言的基础案例集 旨在用于给初学者快速了解Objective-C语言的语法 .zip

    Objective-C是一种强大的面向对象编程语言,它在Apple的Mac OS X和iOS操作系统中广泛使用,是开发iPhone、iPad应用的主要工具。本基础案例集旨在帮助初学者深入理解Objective-C的语法特性,通过实际代码示例来提升...

    Programming With Objective-C

    根据给出的内容,我们可以总结出以下关于Objective-C编程语言的知识点,这些知识点将覆盖从Objective-C的基础知识到高级特性,以及如何在iOS移动开发中使用Objective-C: 1. Objective-C简介 Objective-C是一种面向...

    Objective-C

    在Objective-C的内存管理中,Objective-C引入了引用计数(Reference Counting)和ARC(Automatic Reference Counting)。引用计数是通过`retain`、`release`和`autorelease`来管理对象生命周期的,而ARC则是编译器...

Global site tag (gtag.js) - Google Analytics