runtime--實現篇02(Category增加屬性)

?

? ? ? ??在iOS設計Category中,默認不能直接添加屬性,如果分類中通過property修飾的屬性,只會生成setter和getter的聲明,

不會生成其實現;因此,如果一定要添加屬性的話,需要借助runtime特性,通過?objc_setAssociatedObject(self, &valueKey, value, OBJC_ASSOCIATION_COPY_NONATOMIC)設置值,由objc_getAssociatedObject(self, &valueKey)函數獲取值。

? ?具體實現如下:

? ? ?NSObject+Extension.h中

? ? // ?在分類中,默認通過property修飾的屬性,只會生成setter和getter的聲明,不會生成其實現

? ??@property (nonatomic, copy) NSString *value;

? ?

? ?NSObject+Extension.m中

??#import "NSObject+Extension.h"

? #import <objc/runtime.h>

?

@implementation NSObject (Extension)

? ?static char valueKey; // 關聯屬性值的key

- (void)setValue:(NSString *)value

{

? ? // 將某個值 跟 某個對象關聯起來

? ? // 將某個值 存儲到 某個對象中

? ? objc_setAssociatedObject(self, &valueKey, value, OBJC_ASSOCIATION_COPY_NONATOMIC);

}

?

- (NSString *)value

{

? ? ?// 通過valueKey取value值

? ? return objc_getAssociatedObject(self, &valueKey);

}

@end?

?

測試..........................................................................

- (void)viewDidLoad {

? ? [super viewDidLoad];

? ? NSString *str = @"jack";

? ? str.value = @"abc";?

? ? self.value = @"哈哈哈";

? ??NSLog(@"%@,%@ ", str.value, self.value);

?

}

運行結果:

2015-06-10 17:07:27.488?運行時的應用-分類增加屬性[1698:63864] abc?哈哈哈

?

轉載于:https://www.cnblogs.com/guozhong/p/4566773.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257190.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257190.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257190.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

spark、oozie、yarn、hdfs、zookeeper、

為什么80%的碼農都做不了架構師&#xff1f;>>> spark、 oozie:任務調度 yarn:資源調度 hdfs:分布式文件系統 zookeeper、 轉載于:https://my.oschina.net/u/3709135/blog/1556661

關于halcon多區域挑選有關算法的自我理解(tuple_sort_index)

多區域根據面積挑選想要的obj area_center&#xff08;regions&#xff0c;areas&#xff09; tuple_sort_index(areas&#xff0c;indexs) tuple_sort_index算子將一組數組進行升序排列&#xff0c;然后將其在原數組的index按升序放入indexs中&#xff0c; 例如原數組areas[20…

JLOI2016 方

bzoj4558 真是一道非常excited的題目啊…JLOI有毒 題目大意&#xff1a;給一個(N1)*(M1)的網格圖&#xff0c;格點坐標為(0~N,0~M)&#xff0c;現在挖去了K個點&#xff0c;求剩下多少個正方形&#xff08;需要注意的是正方形可以是斜著的&#xff0c;多斜都可以&#xff09; N…

opencv 直方圖反向投影

轉載至&#xff1a;http://www.cnblogs.com/zsb517/archive/2012/06/20/2556508.html 直方圖反向投影式通過給定的直方圖信息&#xff0c;在圖像找到相應的像素分布區域&#xff0c;opencv提供兩種算法&#xff0c;一個是基于像素的&#xff0c;一個是基于塊的。 使用方法不寫了…

request請求在Struts2中的處理步驟

2019獨角獸企業重金招聘Python工程師標準>>> 一個請求在Struts2框架中的處理大概分為以下幾個步驟 1 客戶端初始化一個指向Servlet容器&#xff08;例如Tomcat&#xff09;的請求 2 這個請求經過一系列的過濾器&#xff08;Filter&#xff09;&#xff08;這些過濾…

vs聯合torch,ZED相機api,opencv建立C++項目

ZED相機api下載及cmake教程 generate產生工程文件后打開&#xff0c;配置如下&#xff1a; 將ZED項目作為啟動項 然后在main.cpp中寫入自己的工程代碼即可&#xff0c;運行也在release X64下進行 注&#xff1a;cmake之前源文件下main.cpp&#xff0c;也就是tutorial 1 - h…

POJ 2186

//在一張有向無環圖G&#xff0c;圖G會包含很多環&#xff08;環里面的點是等價的&#xff09;&#xff0c; //當然可以把環縮成一個點&#xff08;利用tarjan縮點&#xff09;&#xff0c; //形成一棵樹&#xff0c;題目要求是求除他以外的點都指向他&#xff0c;也就是只有一…

使用DataGridView數據窗口控件,構建用戶快速輸入體驗

使用DataGridView數據窗口控件&#xff0c;構建用戶快速輸入體驗 在“隨風飄散” 博客里面&#xff0c;介紹了一個不錯的DataGridView數據窗口控件《DataGridView數據窗口控件開發方法及其源碼提供下載》&#xff0c;這種控件在有些場合下&#xff0c;還是非常直觀的。因為&…

pip安裝

下載pip安裝包&#xff0c;解壓。復制到C:\Users\administrator\下&#xff0c;用cmd打開當前文件夾&#xff0c;用Python安裝&#xff0c; Python setup.py install 安裝完之后記得把Python根目錄下的scripts也放在環境變量里。 以上是我pip安裝的成功例子&#xff0c;可能不…

深入剖析授權在WCF中的實現[共14篇]

I、身份&#xff08;Identity&#xff09;與安全主體&#xff08;Security Principal&#xff09; 從兩個重要的概念談起&#xff1a;Identity與Principal[上篇] 從兩個重要的概念談起&#xff1a;Identity與Principal[下篇] WCF的三種授權模式 II、Windows用戶組授權 基于Wind…

sqlserver 查看鎖表,解鎖

查看被鎖表&#xff1a; 代碼如下 復制代碼 select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran_locks where resource_typeOBJECT spid 鎖表進程 tableName 被鎖表名 [more] 解鎖&#xff1a; 創建一個臨時Table 代碼如下…

json2.js參考

json2.js使用參考 json2.js提供了json的序列化和反序列化方法&#xff0c;能夠將一個json對象轉換成json字符串&#xff0c;也能夠將一個json字符串轉換成一個json對象。<html><head><script type"text/javascript" src"jquery.js"><…

手把手教你用1行代碼實現人臉識別 -- Python Face_recognition

2019獨角獸企業重金招聘Python工程師標準>>> 環境要求&#xff1a; Ubuntu17.10Python 2.7.14環境搭建&#xff1a; 1. 安裝 Ubuntu17.10 > 安裝步驟在這里 2. 安裝 Python2.7.14 (Ubuntu17.10 默認Python版本為2.7.14) 3. 安裝 git 、cmake 、 python-pip # 安裝…

pip安裝的庫導入pycharm中

用pip安裝了一些庫&#xff0c;但pycharm中卻沒有&#xff0c;解決方法是

javascript數組淺談1

最近心血來潮要開始玩博客了&#xff0c;剛好也在看數組這塊內容&#xff0c;第一篇就只好拿數組開刀了&#xff0c;自己總結的&#xff0c;有什么不對的地方還請批評指正&#xff0c;還有什么沒寫到的方面也可以提出來我進行完善&#xff0c;謝謝~~ 首先&#xff0c;大概說說數…

一個關于解決序列化問題的編程技巧

在前一篇文章中我曾經說過&#xff0c;現在正在做一個小小的框架以實現采用統一的API實現對上下文&#xff08;Context&#xff09;信息的統一管理。這個框架同時支持Web和GUI應用&#xff0c;并支持跨線程傳遞和跨域傳遞&#xff08;這里指在WCF服務調用中實現客戶端到服務端隱…

踩坑之路anaconda創建虛擬環境

渾渾噩噩的過了三年渣碩生涯&#xff0c;雖然說自己是搞圖像的&#xff0c;但基本是一些機器視覺的東西&#xff0c;最近突然想好好搞搞深度學習這方面&#xff0c;想著那就先搭搭環境跑個demo吧&#xff0c;經歷了好多莫名其妙的踩坑操作&#xff0c;demo跑的終于沒bug了&…

IP多播技術及其應用

隨著全球互聯網&#xff08;Internet&#xff09;的迅猛發展&#xff0c;上網人數正以幾何級數快速增長&#xff0c;以因特網技術為主導的數據通信在通信業務總量中的比列迅速上升&#xff0c;因特網業務已成為多媒體通信業中發展最為迅速、競爭最為激烈的領域。Internet網絡傳…

【轉載】惱人的函數指針(一)

本文轉載自: http://www.cnblogs.com/AnnieKim/archive/2011/11/20/2255813.html#undefined> 這篇是為了加深記憶所寫。發現&#xff0c;很多知識若不經過反復的琢磨和動手實踐&#xff0c;是很難記得住的。 1&#xff09; 函數指針的初始化。 函數如下&#xff1a; int Com…

dns服務器未響應

昨天還好好的&#xff0c;今天打開電腦顯示DNS服務器為響應。 解決辦法&#xff1a;右擊電腦下方圖標欄——打開Windows任務管理器——服務——服務&#xff08;s&#xff09;——找到DNS client和DHCP client——右擊重啟