iOS 類別中增加、使用屬性

iOS擴展屬性:category可以擴展類的方法,但是不能擴張類的屬性。如果要擴展類的屬性,可以用associative,這個相對於category來說用的比較少,而且他還用到運行時編程,必須使用<obj/runtime.h>,使用objc_getAssociatedObject,objc_setAssociatedObject以及objc_removeAssociatedObjects.這幾個方法的生命如下:

示例代碼如下:

1、先創建一個person類

#import <Foundation/Foundation.h>

@interface Person : NSObject

@property (nonatomic, copy) NSString *name;

@end

#import "Person.h"

@implementation Person

@end

2、新建一個分類,運用associative添加屬性

#import "Person.h"
@interface Person (addproty)
@property(nonatomic, copy)NSString *addr;
@end
#import "Person+addproty.h"
#import <objc/runtime.h>
@implementation Person (addproty)
static char strAddrKey = 'a';
- (NSString *)addr
{
	return objc_getAssociatedObject(self, &strAddrKey);
}
- (void)setAddr:(NSString *)addr
{
	objc_setAssociatedObject(self, &strAddrKey, addr, OBJC_ASSOCIATION_COPY_NONATOMIC);
}
@end
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章