iOS Runtime4 動態新增屬性

2021-08-07 06:37:38 字數 1696 閱讀 8870

uiimage的類目新增屬性imageurl使用**示例:

// uiimage+image.h

@inte***ce

uiimage (image)

@property (nonatomic, copy) nsstring *imageurl; // 動態新增屬性

@end

// uiimage+image.m

@implementation

uiimage (image)

#pragma mark - 動態新增屬性

- (void)setimageurl:(nsstring *)imageurl

- (nsstring *)imageurl

@end

// 呼叫示例:

uiimage *image = [[uiimage alloc]init];

image.imageurl = @"http://";

總結:

1. 動態新增屬性,將會呼叫方法void objc_setassociatedobject(id object, const void *key, id value, objc_associationpolicy policy)為該類對應的屬性進行賦值,在這個方法中存在四個引數,無返回值。

引數描述

id object給哪個物件新增屬性

const void *key屬性名稱

id value屬性值

objc_associationpolicy policy儲存策略,這是乙個列舉值。

儲存策略列舉值:

列舉值描述objc_association_assign弱引用,assign

objc_association_retain_nonatomic強引用,retain,nonatomic

objc_association_copy_nonatomic強引用,copy,nonatomic

objc_association_retain強引用,retain,atomic

objc_association_copy強引用,copy,atomic

2. 在get方法中,將會呼叫方法id objc_getassociatedobject(id object, const void *key)獲取對應的屬性值,在這個方法中存在兩個引數,乙個泛指型別的返回值。

引數描述

id object給哪個物件新增屬性

const void *key屬性名稱

返回值描述id泛指型別的返回值

ios_runtime1_訊息傳送機制

ios_runtime2_方法交換

ios_runtime3_動態新增方法

ios_runtime5_訊息**

ios_runtime6_字典轉化為模型應用

iOS runtime 動態新增屬性

qq群 807236138 群稱 ios 技術交流學習群 1.runtime 動態新增屬性 什麼時候需要動態新增屬性 2.開發場景 給系統的類新增屬性的時候,可以使用runtime動態新增屬性方法 3.本質 動態新增屬性,就是讓某個屬性與物件產生關聯。runtime一般都是針對系統的類 4.在分類中...

iOS runtime動態新增方法

1.為什麼要給乙個類動態新增方法?如果乙個類有很多的方法,當我們載入這個類的時候會比較消耗記憶體資源,需要給每個方法生成對映表,我們可以動態給這個類新增方法 2.乙個類動態新增方法的好處?1.減少載入類是記憶體的消耗 2.可以呼叫乙個未實現的方法和去除報錯 3.主要使用的api 1.bool res...

IOS runtime動態執行時一

對執行時不太了解,今天小夥伴橄欖油陳高給發了個鏈結 看了一部分先存著以後慢慢品 今天一句一句的讀了下 慢慢有了點感覺,把主要的截圖貼在這以後好多看幾遍 typedef struct objc class class struct objc class class isa 指向metaclass,也就...