iOS 分类增加属性
来源:互联网 发布:大数据 曾是规划 编辑:程序博客网 时间:2024/05/21 08:47
对于分类中 增加属性 我的建议是 如果是只读属性 那么可以在分类中使用 ,如果是可变属性 最好在 primary Class 中使用;不要在分类中使用。
代码如下:创建类 EOCPerson 。增加分类 分类中有属性
#import "EOCPerson.h"
@interface EOCPerson (AddProperty)
@property (nonatomic,strong)NSArray *families;
@property (nonatomic,strong,readonly)NSString *fatherName;
@property (nonatomic,strong)NSString *changName;
@end
#import "EOCPerson+AddProperty.h"
#import <objc/runtime.h>
static constchar * kFamiliesPropertyKey="kFamiliesPropertyKey";
@implementation EOCPerson (AddProperty)
@dynamic changName;
/**
但是只读属性 不需要设置可以返回任意的值
@return return value description
*/
- (NSString *)fatherName
{
return@"Yang";
}
/* 第二种使用 运行时关联机制来使用 */
- (NSArray *)families
{
returnobjc_getAssociatedObject(self,kFamiliesPropertyKey);
}
- (void)setFamilies:(NSArray *)families
{
objc_setAssociatedObject(self,kFamiliesPropertyKey, families, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
//- (void)setChangName:(NSString *)changName
//{
// _
//}
//
//- (NSString *)changName
//{
// return _changName;
//}
在 Xcode IDE 中我们发现 不论 _changName 这个选项根本无法出现。在 controller 中使用出现闪退 因为 并没有相应的方法 。不论 我们是否设置成了 @dynamic 我们需要使用
关联对象来设置 和 读取 相应的属性的值。 其实 在 iOS中 系统默认的 setter 和 getter 方法是有特殊的作用的 比如 你如果设置了KVO 的话 属性改变会 回到相关的方法 。但是 如果我们 用这种关联对象 发方式 改变属性值并不会 出发 KVO 。
- iOS 分类增加属性
- 给分类增加一个属性
- iOS在分类中添加属性,运行时编程,objc runtime 动态增加属性
- iOS动态增加属性
- 关于分类不能增加属性的说法
- iOS为分类添加属性
- iOS 为分类添加属性
- iOS开发---如何给类别增加属性
- iOS 类别中增加、使用属性
- 如何给分类增加一个属性(后台)
- iOS 在分类中添加属性
- iOS - 分类添加属性之关联引用
- ios 分类添加属性的问题
- iOS 为UIViewController增加基础性功能的分类
- 使用对象关联为分类增加属性(每个对象的属性互不干扰)
- IOS现在推送需要增加一个属性content-available
- 【iOS】老生常谈category增加属性的几种操作
- 无限级分类 增加
- session与cookie
- 【matlab】Peak SideLobe Ratio And Half Angle Width峰值旁瓣比和半功率角宽
- go的slice传参
- fill函数 和 memset 函数的区别
- leetcode 476: Number Complement
- iOS 分类增加属性
- xxx not in the sudoers file.This incident will be reported
- HtmlSpanner使用小结
- 怎样利用XAMPP搭建本地php环境
- 64 linux spi设备驱动之mcp2515(can控制器)驱动
- 秒懂,Java 注解 (Annotation)你可以这样学
- 小程序-倒计时
- fseek函数、ftell函数和rewind函数
- python [:]