`
lovebirdegg
  • 浏览: 175039 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

属性类型和相关函数

阅读更多
属性(Property)类型定义了对描述属性的结构体objc_property的不透明的句柄。

typedef struct objc_property *Property;

您可以使用函数class_copyPropertyList和protocol_copyPropertyList来获得类(包括范畴类)或者协议类中的属性列表:

objc_property_t *class_copyPropertyList(Class cls, unsigned int *outCount)
objc_property_t *protocol_copyPropertyList(Protocol *proto, unsigned int *outCount)

例如,有如下的类声明:

@interface Lender : NSObject {
    float alone;
}
@property float alone;
@end

您可以象这样获得它的属性:

id LenderClass = objc_getClass("Lender");
unsigned int outCount;
objc_property_t *properties = class_copyPropertyList(LenderClass, &outCount);

您还可以通过property_getName函数获得属性的名字:

const char *property_getName(objc_property_t property)
函数class_getProperty和protocol_getProperty则在类或者协议类中返回具有给定名字的属性的引用:

objc_property_t class_getProperty(Class cls, const char *name)
objc_property_t protocol_getProperty(Protocol *proto, const char *name, BOOL isRequiredProperty, BOOL isInstanceProperty)

通过property_getAttributes函数可以获得属性的名字和@encode编码。关于类型编码的更多细节,参考“类型编码“一节;关于属性的类型编码,见“属性类型编码”及“属性特征的描述范例”。

const char *property_getAttributes(objc_property_t property)
综合起来,您可以通过下面的代码得到一个类中所有的属性。

id LenderClass = objc_getClass("Lender");
unsigned int outCount, i;
objc_property_t *properties = class_copyPropertyList(LenderClass, &outCount);
for (i = 0; i < outCount; i++) {
    objc_property_t property = properties;
    fprintf(stdout, "%s %s\n", property_getName(property), property_getAttributes(property));
}
分享到:
评论
1 楼 ext 2010-01-18  
long4 兄
这篇文章看起比 cocoachina 上的丰满不少哈。

相关推荐

    JavaScript之私有属性,私有函数,函数实现对外不可见

    在JavaScript编程中,私有属性和私有函数是实现封装和数据隐藏的关键概念。这些特性使得我们可以更好地控制代码的访问权限,防止外部直接修改或访问内部状态,从而增强程序的安全性和稳定性。在JavaScript中,虽然...

    浅谈C++中强制类型转换函数

    "C++强制类型转换函数详解" C++中强制类型转换函数是指使用强制类型转换操作...理解和掌握强制类型转换函数是C++程序设计中非常重要的一部分,它可以帮助我们更好地解决类型转换的问题,并提高程序的安全性和可靠性。

    Excel VBA 对象属性函数参考chm.zip

    标题中的“对象属性函数参考”指的是VBA中关于对象的属性和函数的详细文档。属性是对象的特性,例如一个工作表的名称、单元格的值或字体颜色;函数则是可以执行特定任务的代码块,如计算、数据操作或界面控制。 ...

    从标准假设中保留属性的哈希函数_Property-Preserving Hash Functions from Standard

    《从标准假设中保留属性的哈希函数》这篇论文探讨了一种特殊类型的哈希函数——属性保留哈希函数(Property-Preserving Hash Functions),这种函数能够在压缩输入数据的同时,保持某些特定属性,允许在仅知道哈希值...

    C++实验六 多态性和虚函数的应用 课程 实验报告

    在C++编程语言中,多态性和虚函数是面向对象编程的重要特性,它们允许程序员创建灵活且可扩展的代码结构。本次实验旨在深入理解和熟练运用这两个概念。实验报告的标题和描述表明,这是一个关于C++实验,特别是针对多...

    SQL常用函数汇总(比较详细)

    SQL 语言中有多种类型的函数,可以按照不同的分类方式来分类,下面将从函数类别、聚合函数、转换函数、加密函数、游标函数、日期和时间函数、数学函数、元数据函数、排名函数、行集函数、安全函数、字符串函数、系统...

    delphi函数和属性

    本文主要介绍了Delphi中常用的几种函数和属性,包括类型转换函数和字符串处理函数等。掌握这些基本的函数可以帮助开发者更加高效地进行Delphi应用程序的开发。此外,对于初学者来说,理解这些函数的基本原理和使用...

    sqlserver 函数大全

    元数据函数返回数据库和数据库对象的属性信息。排名函数是一种非确定性函数,可以返回分区中每一行的排名值。行集函数返回可在 Transact-SQL 语句中表引用所在位置使用的行集。安全函数返回有关用户和角色的信息。...

    构造函数和实例

    构造函数提供了一种机制,用于在创建新对象时定义其属性和方法,而实例则是这些属性和方法的载体。通过构造函数,可以方便地创建多个具有相同属性和方法的对象,而不必重复编写相同的代码。这种模式极大地提高了代码...

    易语言简单类函数指针源码

    在易语言中,类的定义通常包含属性(成员变量)和方法(成员函数)。类的实例化过程就是创建一个具体的对象,对象则拥有类定义的属性和可以执行类定义的方法。例如: ```易语言 .类.定义 类名 .属性 属性名, 数据...

    VB函数参考大全 函数

    VB支持面向对象编程,对象的属性和方法也是"函数"的一种形式,如Form的Show方法显示窗体,TextBox的Text属性获取或设置文本。 以上只是VB函数使用的一小部分,实际的VB函数大全涵盖了更广泛的领域,包括网络通信、...

    C#_函数手册大全+c#公共函数

    9. 枚举和结构:如何定义枚举和结构,以及相关的操作函数。 10. LINQ:查询表达式和方法链式调用,如`Enumerable.Where()`、`Select()`等。 四、面向对象编程 1. 类与对象:类的定义、属性和方法,以及如何实例化...

    C++简单类(构造函数,析构函数以及拷贝构造函数)的实现

    在C++编程语言中,类是面向对象编程的核心概念之一,它允许我们定义自己的数据类型,这些类型可以包含数据成员和成员函数。本文将详细解析一个简单的C++类`cPerson`的实现,重点关注其构造函数、析构函数以及拷贝...

    VB函数大全_基本函数大全.pdf

    DateAdd 函数返回加上了指定的时间间隔的日期,DateDiff 函数返回两个日期之间的间隔,DatePart 函数返回给定日期的指定部分,DateSerial 函数返回指定年月日的日期子类型的变体,DateValue 函数返回日期子类型的...

    Swift教程:函数篇 函数类型

    总的来说,理解Swift中的函数类型和相关概念,如高阶函数、闭包和泛型,将极大地提升你的编程能力,使你能编写出更加高效和可维护的代码。通过观看"Swift教程:函数篇 函数类型"的视频教程,你可以深入学习这些主题...

    AutoCAD VLISP、VBA、ARX函数库查询辞典.rar

    ARX函数库包含了许多类和函数,用于创建动态链接库(DLL),这些DLL可以与AutoCAD紧密集成,提供自定义对象类型、定制用户界面和扩展命令。查询ARX函数辞典对于深入理解和利用ARX API至关重要。 这个压缩包文件包含...

    UE4材质函数

    FunctionInput(函数输入)有五个项目说明属性:Input Name(输入名称)、Description(说明)、Input Type(输入类型)、Preview Value(预览值)和Sort Priority(排序优先顺序)。 Input Name(输入名称)是 ...

    Delphi函数参考手册

    ### Delphi函数与属性详解 ...以上列举了Delphi中常用的函数和属性,它们各自有着独特的功能和用途,在实际开发中具有重要的意义。通过合理运用这些函数和属性,可以极大地提高程序的性能和用户体验。

    simulink中s函数的教程资料—s函数编写与仿真

    4. 配置S函数:在S函数块的属性对话框中指定S函数的位置和类型。 5. 仿真与调试:在Simulink模型中使用S函数,并进行仿真验证。 四、S函数的仿真流程 S函数在Simulink仿真过程中会经历初始化、时间步进和终止三个...

Global site tag (gtag.js) - Google Analytics