`
最初永远
  • 浏览: 6176 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Objective-C类别

阅读更多

类别

利用objective-c的动态运行时分配机制,可以为现有的类添加新方法。

1.类别的声明

@interface NSString (NumberConvenience)
 - (NSString *) lengthAsNumber;
 @end //NumberConvenience

 上面的声明表示:类别的名称是NumberConvenience,而且该类别将向NSString类中添加方法lengthAsNumber。

 只要保证类别的唯一性,可以向一个类中添加任意多的类别。

2. 实现类别

@implementation NSString (NumberConvenience)
- (NSString *) lengthAsNumber{
	unsigned int length = [self length];
	return ([NSNumber numberWithUnsignedInt: length]);
}//lengthAsNumber
@end // NumberConvenience

3.类别的局限性

a.无法向类中添加新的实例变量,类别没有位置容纳实例变量

b.名称冲突,即类别中的方法与现有的方法重名,当发生冲突时类别具有更高的优先级。

4.类别的作用

(1).将类的实现分散到多个不同文件或者不同的框架中

(2).创建对私有方法的前向引用

【Cocoa中没有真正的私有方法,则实现私有方法类似功能的方法为:

先在类别中声明方法;然后到现有类的实现中实现该方法。

这样这个类中的其他方法可以使用该方法,而其他外部的类就不会知道该方法的存在了。】

(3).向对象添加非正式协议。

【创建一个NSObject的类别称为创建一个非正式协议。】

5.委托delegate是一种对象,另一个类的对象会要求委托对象执行它的某些操作。

受委托对象在某个时间(某个事件触发)时,会自动通知委托对象执行委托方法。 

6.选择器:@ selector():选择器只是一个方法名称,但它以objective-c运行时使用的特殊方式编码,以快速执行查询。圆括号中的内容是方法名。

所以Car类的setEngine:方法的选择器是:@ selector (setEngine:)

受委托对象如何知道其委托对象是否能处理它(受委托对象)发送给它(委托对象)的消息?

通过选择器,受委托对象先检查委托对象,询问其是否能响应该选择器。如果能,则向它发送消息。

0
0
分享到:
评论

相关推荐

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

    1. **Objective-C基础**:Objective-C是在C语言基础上扩展的,因此,理解C语言的基本语法是必要的。Objective-C添加了消息传递机制、类和协议等面向对象特性。 2. **消息传递**:Objective-C中的对象通过发送消息来...

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

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

    《Objective-C基础教程》中文版(含源代码)

    3. **Objective-C语法**:深入解析Objective-C的语法特性,如消息传递、方法定义、属性声明、类别(Category)和协议(Protocol)等,以及如何使用这些特性编写代码。 4. **Foundation框架**:介绍Objective-C开发...

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

    首先,"Programming In Objective-C.chm" 是一本关于Objective-C编程的电子书,可能涵盖了语言的基本语法、类和对象的概念、消息传递机制、内存管理(在Objective-C中是ARC,即自动引用计数)、类别、协议、 Blocks...

    Objective-C

    Objective-C是在C语言的基础上扩展了Smalltalk式的面向对象特性,使得它既有C语言的强大功能,又具备了面向对象编程的灵活性。 在Objective-C中,类是所有对象的基础。类定义了一组属性(实例变量)和方法(函数)...

    Learning Cocoa With Objective-C

    Objective-C是Cocoa的主要编程语言,它扩展了C语言,引入了面向对象的特性,如消息传递和类别。 本书首先会引导读者了解Objective-C的基础,包括语法、类、对象以及内存管理。然后,它会深入Cocoa的核心组件,如...

    objective-c基础教程第2版.pdf

    Objective-C是一种面向对象的编程语言,它是C语言的扩展,最初由Brad Cox在20世纪80年代开发,并且广泛应用于Mac OS X和iOS的应用程序开发中。Objective-C在C语言的基础上增加了Smalltalk风格的消息传递机制,允许...

    Objective-C基础教程+随书源代码

     本书全面而系统地讲述Objective-C语言的基础知识和面向对象编程的重要概念,结合实例介绍了Cocoa工具包的优秀特性和其中的框架,以及继承、复合、源文件组织、内存管理、对象初始化和类别创建等众多重要的面向对象...

    Objective-C2.0程序设计习题官方答案

    Objective-C2.0是苹果公司开发的一种面向对象的编程语言,它是C语言的超集,融合了Smalltalk的动态特性,广泛应用于iOS和Mac OS X操作系统。本资料集中的"Objective-C2.0程序设计习题官方答案"显然是针对学习...

    Objective-C 基础语法

    Objective-C是一种面向对象的编程语言,它是在标准C语言的基础上发展起来的,并且完全兼容C语言。由于其面向对象的特性,Objective-C被广泛应用于苹果公司的iOS和OS X操作系统上的应用程序开发。 #### 二、...

    好学的Objective-c(高清版)PDF

    Objective-C的起源可以追溯到C语言,它扩展了C的语法,加入了Smalltalk的面向对象特性。在Objective-C中,类是对象的蓝图,对象则是程序中的基本工作单元。理解类和对象的概念是学习Objective-C的第一步。 首先,你...

    Objective-C编程(第四版)英文原版

    4. **Objective-C类别(Category)**:Objective-C允许通过类别添加方法到已存在的类,这是一种强大的代码复用和扩展机制。 5. ** Blocks和GCD**:Blocks是Objective-C中的匿名函数,常用于异步编程,与Grand ...

    Objective-C - Learning Objective-C 2.0 Second Edition

    C语言是Objective-C的基础,掌握C语言对于学习Objective-C至关重要。本书的第一章《C, the Foundation of Objective-C》从C语言的基本概念出发,介绍了变量、数据类型、运算符、表达式、控制结构等基础知识,为后续...

    Object-C语言教程:Objective-C 简介

    Objective-C是一种主要应用于苹果操作系统上的编程语言,它是C语言的一种扩展,支持面向对象编程特性。Objective-C最初由Pike International公司的Brad Cox和Tom Love于1983年设计,并在1986年由NEXTSTEP系统引入。...

    objective-c的计算器

    1. **Objective-C基础**:Objective-C是C语言的超集,它引入了Smalltalk的类、消息传递等面向对象特性。了解基本的数据类型、变量声明、控制流语句(如if、for、while)以及函数定义是开始的基础。 2. **类和对象**...

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

    6. categories:Objective-C的类别机制允许向已存在的类添加新的方法,而无需修改原有代码,这是Objective-C的一个强大特性。 7. blocks:Blocks是Objective-C的匿名函数,可以捕获和存储当前作用域内的变量。它们...

    Learn Objective-C 中文版 v2

    - **Category(类别)**:Objective-C允许扩展已存在类的功能,无需创建子类。 - **Blocks(块)**:Objective-C引入了块的概念,类似于C++的lambda表达式,用于创建匿名函数。 - **GCD(Grand Central Dispatch...

    学习Objective-C--第一天.doc

    - 它是 C 语言的超集,意味着所有合法的 C 代码都是 Objective-C 的一部分,同时增加了面向对象编程的特性,如类别(categories)、协议(protocols)和动态类型等。 - Objective-C 的核心是消息传递机制,类似于 ...

    Objective-C程序设计 第6版 完整版 0分奉上

    5. **分类和类别**:分类可以向已存在的类添加方法,而不会影响其原有结构,这是Objective-C特有的扩展机制。 6. **块(Blocks)**:Objective-C的块是内联函数,可以捕获并存储执行上下文,常用于异步操作和简化回...

Global site tag (gtag.js) - Google Analytics