iOS runtime 給 Category 加屬性
首先建立一個 Model 類
#import <Foundation/Foundation.h>
@interface Model : NSObject
@end
新增 Category
標頭檔案
#import "Model.h"
@interface Model (Data)
@property (nonatomic,copy) NSString *data;
@end
m檔案
#import "Model+Data.h"
#import <objc/runtime.h>
NSString *const kData = @"data";
@implementation Model (Data)
- (NSString *)data{
return objc_getAssociatedObject(self, (__bridge const void *)(kData));
}
- (void)setData:(NSString *)data{
objc_setAssociatedObject(self, (__bridge const void *)(kData), data, OBJC_ASSOCIATION_COPY);
}
測試
#import <XCTest/XCTest.h>
#import "Model.h"
#import "Model+Data.h"
@interface TestRunTimerTests : XCTestCase
{
Model *model ;
}
@end
@implementation TestRunTimerTests
- (void)setUp {
[super setUp];
model = [Model new];
}
- (void)testCartygor1{
model.data = @"ddddd";
NSLog(@"%@",model.data);
NSAssert([model.data isEqualToString:@"ddddd"], @"fail--------");
}
- (void)testCartygor2 {
NSLog(@"---- - =%@= ---",model.data);
NSAssert(true, @"fail--------");
}
相關文章
- iOS 開發:『Runtime』詳解(三)Category 底層原理iOSGo
- CSS——CSS 給文字加樣式:① 字型屬性CSS
- CSS——CSS 給文字加樣式:② 文字屬性CSS
- 探秘Runtime - 深入剖析CategoryGo
- Runtime原始碼 Category(分類)原始碼Go
- iOS 開發:『Runtime』詳解(四)獲取類詳細屬性、方法iOS
- iOS底層原理總結 -- 利用Runtime原始碼 分析Category的底層實現iOS原始碼Go
- iOS UITableView 修改屬性iOSUIView
- iOS底層原理-CategoryiOSGo
- onethink 1.1中category表中display屬性,幾乎沒用啊Go
- 給Product新增自定義屬性
- 關於IOS 屬性atomic(原子性)的理解iOS
- iOS RunTime 總結iOS
- iOS Runtime詳解iOS
- 物件屬性值賦給變數物件變數
- iOS問題整理03----CategoryiOSGo
- 修復ios不支援fixed屬性iOS
- iOS 防止Crash之runtimeiOS
- iOS使用shell指令碼批量修改屬性iOS指令碼
- User Defined Runtime Attributes (使用者定義的執行時屬性)
- iOS開發-屬性的記憶體管理iOS記憶體
- iOS Runtime介紹和使用iOS
- iOS底層原理探究-RuntimeiOS
- 【iOS開發進階】-RunTimeiOS
- 給DevOps加點料——融入安全性的DevSecOpsdev
- iOS開發之runtime(一):runtime除錯環境搭建iOS除錯
- iOS底層原理總結 - Category的本質iOSGo
- iOS之runtime詳解api(二)iOSAPI
- iOS底層面試題--RuntimeiOS面試題
- iOS之runtime詳解api(四)iOSAPI
- iOS之runtime詳解api(三)iOSAPI
- iOS之runtime詳解api(一)iOSAPI
- iOS 問題整理04----RuntimeiOS
- iOS探索 runtime面試題分析iOS面試題
- iOS Runtime 初識與應用iOS
- Category為什麼只能加方法不能加成員變數?Go變數
- CMake 屬性之全域性屬性
- C#給自動屬性設定預設值C#
- Python給exe新增以管理員執行的屬性Python