屬性型別和相關函式

2021-08-30 10:12:19 字數 1577 閱讀 9244

屬性(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)

例如,有如下的類宣告:

@inte***ce lender : nsobject 

@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++)

MySQL 時間日期型別和相關函式

mysql中的日期和時間型別 型別位元組 最小值最大值 零值datetime 81000 01 01 00 00 00 9999 12 31 23 59 59 0000 00 00 00 00 00 date 41000 01 01 9999 12 31 0000 00 00 timestamp 4...

原型鏈,函式的相關屬性

原型鏈的概念 繪製原型鏈 object.prototype 的方法簡介 hasownproperty isprototypeof propertyisenumerable 裝箱 與 拆箱 強調幾點 instanceof介紹 function function foo fnname var fnnam...

STM32 低功耗相關函式和型別

很多微控制器都有低功耗模式,stm32f4 也不例外。在系統或電源復位以後,微控制器處於執行狀態。執行狀態下的 hclk 為 cpu 提供時鐘,核心執行程式 當 cpu 不需繼續執行時,可以利用多個低功耗模式來節省功耗,例如等待某個外部事件時。使用者需要根據最低電源消耗,最快速啟動時間和可用的喚醒源...