为一个类动态的添加属性

/*

1不想集成一个类添加属性,想动态的添加一个属性

*/

||解决步骤

1.新建一个分类,导入

#import <objc/runtime.h>

2.添加属性(添加的属性,只是做了声明,并没有帮我们生成set,get方法)

3.手动添加set,get方法

{1.在set方法中实现

/*

*@object 为那个对象添加属性

*@key  添加一个对应的key  c语言类型的

*@value  对应的值

*@objc_AssociationPolicy  策略

*/

objc_setAssociatedObject(<#id object#>, <#const void *key#>, <#id value#>, <#objc_AssociationPolicy policy#>)

1.在get方法中实现

/*

*@object 获取那个对对象的值(self)

*@key  添加一个对应的key  c语言类型的

*/

objc_getAssociatedObject(<#id object#>, <#const void *key#>)

}

/*******************实例**********************/

#import <Foundation/Foundation.h>

@interface NSString (Exteension)

@property (nonatomic,copy)NSString * name;

@end

#import "NSString+Exteension.h"

#import <objc/runtime.h>

/*为一个类动态添加属性*/

static char * nameKey = "nameKey";

@implementation NSString (Exteension)

- (void)setName:(NSString *)name

{

objc_setAssociatedObject(self, nameKey, name, OBJC_ASSOCIATION_COPY_NONATOMIC);

}

- (NSString *)name

{

return objc_getAssociatedObject(self, nameKey);

}

@end

时间: 2024-10-29 19:07:28

为一个类动态的添加属性的相关文章

如果使用实例化对象,来为类动态的添加一个 字符串形式的 方法。

import types class MyClass: @staticmethod def extends(self_name, method_name, method_str, ): ''' 使用实例化对象 动态的为 类添加一个 字符串形式的 方法. :param self_name: 调用该方法的对象 的名字 :param method_name: 要添加的方法的名字 :param method_str: 这个方法的 具体代码 ''' method_str = method_str + '\

Python3基础 一个类中有两个属性A,B。 只能对其中的一个进行赋值

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ code: #很多有趣的功能,看似简单,但是你要是写起来,可不那么容易呐. #多思考,心常清静,好好看小甲鱼的视频教程 class MyClass : def __init__(self) : self.boolBook = True self.boolPen = True #酱油选手 s

在类目中添加属性

.h文件 //分类的头文件 @interface ClassName (CategoryName) @property (nonatomic, strong) NSString *str;//此为新增的属性 //此为新增的属性 @end .m文件 //实现文件 #import "ClassName + CategoryName.h" #import <objc/runtime.h> static void *strKey = &strKey; @implementa

C#定义一个类,并生成属性的例子

1 class Person 2 { 3 private string name; 4 private string age; 5 private string job; 6 7 public Person(string name,string age,string job) 8 { 9 this.name = name; 10 this.age = age; 11 this.job = job; 12 } 13 14 //因为有get方法,所以必须要有返回类型 15 public string

ios动态添加属性的几种方法

http://blog.csdn.net/shengyumojian/article/details/44919695 在ios运行过程中,有几种方式能够动态的添加属性. 1-通过runtime动态关联对象 主要用到了objc_setAssociatedObject,objc_getAssociatedObject以及objc_removeAssociatedObjects [objc] view plain copy //在目标target上添加关联对象,属性名propertyname(也能用

细说python类2——类动态添加方法和slots(转)

先说一下类添加属性方法和实例添加属性和方法的区别, 类添加属性属于加了一个以类为全局的属性(据说叫静态属性),那么以后类的每一个实例化,都具有这个属性.给类加一个方法也如此,以后类的每一个实例化都具备这个方法(但是据说叫动态方法.)但是给实例加一个属性,作用域就是这个实例,是与类没关系的(据说这种属性叫动态属性). Python类的实例可以动态的添加属性.举个例子,声明一个类A >>> class A(object):...   def __init__(self):...     pr

Python笔记(4)类(上)属性与描述符

部分参考自:http://www.geekfan.net/7862/ 新式类与经典类 2和3不一样,3都是新式类. 新式类和经典类的区别: class A: #classic class """this is class A""" pass __slots__=('x','y') def test(self): # classic class test """this is A.test()""&

【PHP面向对象(OOP)编程入门教程】4.如何抽象出一个类?

上面已经介绍过了, 面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,所以我们首先要做的就是如何来声明类, 做出来一个类很容易,只要掌握基本的程序语法定义规则就可以做的出来,那么难点在那里呢? 一个项目要用到多少个类,用多少个对象, 在那要定义类,定义一个什么样的类,这个类实例化出多少个对象, 类里面有多少个属性, 有多少个方法等等,这就需要读者通过在实际的开发中就实际问题分析设计和总结了. 类的定义: 1 2 class 类名 { } 使用一个关键字class和后面加上一个你想要的类

php--opp--4.如何抽象出一个类?

上面已经介绍过了, 面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,所以我们首先要做的就是如何来声明类, 做出来一个类很容易,只要掌握基本的程序语法定义规则就可以做的出来,那么难点在那里呢? 一个项目要用到多少个类,用多少个对象, 在那要定义类,定义一个什么样的类,这个类实例化出多少个对象, 类里面有多少个属性, 有多少个方法等等,这就需要读者通过在实际的开发中就实际问题分析设计和总结了. 类的定义: class 类名 { } 使用一个关键字class和后面加上一个你想要的类名以及加