Category和Associative

2024-02-25 01:48
文章标签 category associative

本文主要是介绍Category和Associative,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Category,类目,可以为已有的类添加新的方法,但是要想在Category里扩展属性就要使用Runtime的Associative,使用Runtime来添加类目的属性。


static void * MyObjectMyCustomPorpertyKey = (void *)@"MyObjectMyCustomPorpertyKey";

@implementation MyObject (ExtendedProperties)

- (id)myCustomProperty
{
        return objc_getAssociatedObject(self, MyObjectMyCustomPorpertyKey);
}

- (void)setMyCustomProperty:(id)myCustomProperty
{
        objc_setAssociatedObject(self, MyObjectMyCustomPorpertyKey, myCustomProperty, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}

@end


以上即是使用Associative把self和myCustomProperty两个对象进行关联,从而达到为类目添加属性的目的。


objc_setAssociatedObject(self, KEY_TAGSTRING, nil,OBJC_ASSOCIATION_RETAIN_NONATOMIC);   //可以用来断开Associative



这篇关于Category和Associative的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/744065

相关文章

AI模型:追求全能还是专精?-- 之6 语言复杂度类别(Category 0~3 类)和语言功能性类型(Type 0~Ⅲ 型)之2

Q17、我前面说过,语言复杂度的0~3级(Category 0~3)表示了语言的的上下文相关性 : 完全不相关, 单相关的 单词上下文, 双相关的句子上下文 全相关的文章上下文 。我准备翻译为 Context - irrelative /relative/correlative/ full-correlative,显式表达了语言复杂度的0~3级(Category 0~3)区别的上下文相关性是一种关

[iOS]iOS AudioSession详解 Category选择 听筒扬声器切换

在你读这篇文章之前,如果你不嫌读英文太累,推荐阅读下苹果iOS Human Interface Guidelines中Sound这一章。 选择一个Category AVAudioSessionCategoryAmbient 或 kAudioSessionCategory_AmbientSound ——用于非以语音为主的应用,使用这个category的应用会随着静音键和屏幕关

执行hadoop中bin操作时报错:Operation category READ is not supported in state standby

在hadoop执行操作的时候报错如下:   从报错中可以分析出错误:其中Operation category READ is not supported in state standby   原因:配置了Hadoop HA,启动了一个hadoop NameNode时而启动的NameNode为standby状态。   查看nn1状态:   解决方法:将standby状态手动改为act

OC 中的分类(Category)详解

1、Category  分类、类别 2、分类:可以给某一个类扩充一些方法(不修改原来类的代码) 3、分类也分为声明(放在.h文件)和实现(放在.m文件): 分类的声明格式如下 @interface 类名(分类名称) //要给类扩充的方法的声明 @end 分类的实现 @implementation  类名(分类名称) //对应的方法实现 @end 4、分类名一般以模块进行

android.intent.category.DEFAULT的用途和使用

如果是隐式(implicit )intent,android默认给加上一个CATEGORY_DEFAULT,这样的话如果intent filter中没有android.intent.category.DEFAULT这个category的话,匹配测试就会失败。所以,如果你的 activity支持接收implicit intent的话就一定要在intent filter中android.intent.

NSFileManager+Category

1.头文件 #import <Foundation/Foundation.h>#define USER_FOLDER @"/User"#define USER_CACHE_FOLDER @"/Cache"#define USER_LOG_FOLDER [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDoma

UITextField+Category

import “UITextField+Category.h” @implementation UITextField (Category) - (void)setTextFieldInputAccessoryView{ UIToolbar * topView = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, WIDTH, 30)]; [

C++之关联容器(associative - container)简介

前言:本人没有算法基础就去刷leetcode,由于需要用到hash table,反映在C++上即关联容器。 一、Hash Table 是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 给定表M,存在函数f(key),对任意给定的关键字值key,

iOS中为category添加@property支持

Objective-C runtime提供了Associative References支持,也就是说每一个对象都有一个可选的dictionary字典,我们可以向其添加key/value对。 这是一个非常强大的功能,我们都知道Objective-C中支持category,我们可以在category中添加方法,但是它不允许我们添加实例变量。 通过这个Associati

分类器对未见过类别(unseen category)的识别问题

这篇文章比较旧了,其实是讨论开集识别问题的(Open-Set Problem),可以参考本人的新文章:真实世界中的开集识别问题(Open-Set Recognition Problem) 未见过类别     未见过类别(unseen category)或者叫不知道类别(unknown category)。简单来说,如我们定义类别{苹果,香蕉} 且其数据集为D,那么定义一个二分类器C,将D分割为