`
Xinaction
  • 浏览: 92019 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Objective-C 中的 selector

阅读更多

相对于c/c++对象语言,selector是obj-c中的一个特色类型,刚开始时我对她还不是很了解,因为最近在公司要做个iPhone的training,特地复习了一下语法,对selector有了更深的认识,“趁热”写下来,呵呵……
简单地理解,selector就是一个类型,这个类型的变量代表一个objectiv-c类的函数。如果比较一下它的背景,也许会有豁然开朗的感觉。
对C++来说,代码在编译前都必须明确所有函数调用的类型,什么样的对象能调用什么样的函数都在这个时候确定。在代码运行时,想要改变函数调用的形式是不可能的。而纯粹的对象语言看重程序应用的灵活性,在理想世界中,一个纯粹是由对象组成的世界,一切在运行时应该都是可以根据环境的变化而改变的,包括对对象方法的调用的形式(真是醍醐灌顶啊~~)。于是,selector概念的出现就不难理解了。通过它,在运行时我们可以动态地改变消息的接受者,也可以动态地改变消息类型(可以理解为动态改变调用的方法)。iPhone中的Target-Action设计模式就是最好的应用。
如此看来,selector在obj-c的动态性方面着实发挥了重要的作用。你认为呢?

分享到:
评论

相关推荐

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

    1. **Objective-C的起源与特性**:Objective-C是在C语言的基础上扩展的,增加了消息传递机制和面向对象特性。它的语法包含C语言的所有部分,同时引入了类、继承、多态等OOP概念。 2. **类与对象**:在Objective-C中...

    Object-C语言教程-提供了 Objective-C 的基本语法和一些示例,希望能够帮助你快速入门 Objective-C

    **Objective-C**是一种结合了C语言的基础特性和Smalltalk式消息传递机制的面向对象编程语言。作为C语言的一个超集,Objective-C允许开发者直接使用C语言代码。此外,它还借鉴了C++的一些特性,尽管它并非C++的直接...

    objective-c编程 第2版=objective-c program 2nd edition_13889311

    Objective-C是一种强大的面向对象的编程语言,特别是在Apple的iOS和macOS开发中占据核心地位。Objective-C编程第二版,可能是为了适应技术的更新和开发者的需求而进行的一次修订,旨在帮助程序员深入理解和熟练掌握...

    Objective-C基础教程源代码 Learn objective-C on the Mac Mark Dalrymple著书

    1. **Objective-C语法**:Objective-C的语法基于C语言,但引入了类、接口和消息传递等概念。这包括定义类、属性(@property)和方法(@selector)的语法,以及理解类接口(.h)和实现(.m)文件的作用。 2. **对象...

    Objective-C语言核心语法

    Objective-C 是一种面向对象的编程语言,它是C++的一个扩展,尤其在苹果的开发环境中广泛使用。本篇文章主要关注Objective-C的核心语法,旨在帮助已经熟悉C++的开发者快速上手。 Objective-C 的语法中,类的定义和...

    Objective-C编程之道

    在Objective-C中,类通过@interface和@implementation来定义,属性通过@property声明,方法通过-(return_type)selector:(参数类型)parameters;定义。 其次,Objective-C中的消息传递是其核心特性。与其他语言不同,...

    Objective-C示例代码1

    5. **方法定义**:Objective-C的方法定义可能包括选择器(selector)、参数列表和方法体。比如,`- (FractionDemo *)add:(FractionDemo *)otherFraction`是一个加法操作的方法。 6. **协议(Protocol)**:...

    0基础iOS开发学习计划Objective-c语言内容概述.doc

    Objective-C的数据类型大部分沿用了C语言中的数据类型,如整型(`int`, `long`, `short`)、浮点型(`float`, `double`)等。此外,还有一些特殊的类型,如`NSString`、`NSArray`等用于处理字符串和数组等对象。 - ...

    objective-c 面向对象编程

    Objective-C是一种基于C语言的面向对象编程(OOP)语言,尤其在苹果的iOS和macOS开发中占据核心地位。它的设计目标是扩展C语言,使其支持类、消息传递和其他面向对象特性。以下是对Objective-C面向对象编程的详细...

    基于Objective-C的面向对象编程

    Objective-C是苹果公司开发的一种面向对象的编程语言,它是C语言的超集,增加了Smalltalk风格的消息传递机制。Objective-C在iOS和macOS开发中扮演着核心角色,是构建Apple生态系统应用的主要语言。 在"基于...

    objective-c学习资料

    Objective-C是在C语言基础上扩展的,它引入了消息传递机制和类的概念,使得C语言具备了面向对象的能力。Objective-C的语法在某些方面与C++相似,但它的动态性更强,允许在运行时修改类和方法。 2. **类与对象**: ...

    Using Swift with Cocoa and Objective-C中文

    Swift提供了`Selector`类型,可以用于调用Objective-C的方法。这在实现某些Objective-C设计模式时特别有用。 ##### 使用Objective-C特性编写Swift类 **继承Objective-C的类** Swift类可以继承Objective-C类,并...

    Learn Objective-C(zh)(v2).pdf

    接下来,书中会讲解Objective-C的语法,如选择器(selector)、协议(protocol)、分类(category)和扩展(extension)。选择器是Objective-C中表示方法的唯一标识符,用于消息的发送。协议定义了一组可选的方法,...

    Objective-C函数速查实例手册光盘 源文件

    - **选择器(Selector)**:Objective-C中的函数通常通过选择器来标识,它是方法名的表示形式。 - **实例变量与属性(Property)**:实例变量存储对象的数据,而属性提供了访问这些数据的封装机制,包括内存管理、...

    objective-c的一些代码

    总之,"objective-c的一些代码"涵盖了Objective-C语言的基础、面向对象编程的原理以及iOS和macOS开发中的实际应用场景。通过练习、作业和课堂示例,开发者可以逐步掌握这个语言并成为熟练的iOS或macOS开发者。

    IOS应用源码——Objective-C基础教程 随书源码.zip

    Objective-C是苹果公司为其操作系统macOS和iOS开发的主要编程语言,它是C语言的超集,融合了Smalltalk的面向对象特性。本教程的随书源码着重于介绍Objective-C的基础知识,帮助开发者深入理解该语言的语法和特性,...

    Effective Objective-C 2.0&Obj;-C高级编程

    Objective-C是一种强大的面向对象的编程语言,特别是在iOS和macOS应用开发中占据核心地位。"Effective Objective-C 2.0&Obj-C高级编程"这个压缩包文件包含了关于这个语言的深入学习资料,旨在帮助开发者提升他们的...

    Objective-C2.0程序设计 答案

    Objective-C是一种面向对象的编程语言,它是C语言的超集,主要用于Apple的Mac OS X和iOS操作系统。在Objective-C2.0中,苹果引入了一些改进和优化,使其更易用且效率更高。以下是对Objective-C2.0程序设计中一些关键...

    禅与 Objective-C 编程艺术

    通过阅读《禅与 Objective-C 编程艺术》,开发者不仅可以提升Objective-C的技术水平,还能学会如何将禅的理念融入到编程实践中,创造出更具智慧和美感的代码。无论是初学者还是经验丰富的开发者,都能从这本书中获得...

    Programming in Objective-C 5th Edition

    1. **选择器**:Objective-C中的方法通常通过选择器来调用,例如`[object performSelector:@selector(methodName)]`。 2. **协议**:Objective-C支持协议,即接口的概念,用于定义一组方法,其他类必须实现这些方法...

Global site tag (gtag.js) - Google Analytics