美文网首页
分类中声明属性

分类中声明属性

作者: Jessica124 | 来源:发表于2017-03-01 10:25 被阅读39次

分类(category)
.h中:


@interface <#class name#> (<#category name#>)
@end

.m中:

@implementation <#class#> (<#category name#>)
<#methods#>
@end

这种分类如果声明属性,

@interface ViewController : UIViewController
@property (nonatomic, copy, readonly) NSString *name;
@end
@interface ViewController (Name)
@property (nonatomic, copy) NSString *lastName;
@end

编译器会报警告。
意思是此分类无法生成属性相关实例变量,所以需要开发人员自己在分类中为该属性实现存储方法。

static const void * externVariableKey = "externVariableKey";
@implementation ViewController (Name)
@dynamic lastName;
- (id)lastName {
    return objc_getAssociatedObject(self, externVariableKey);
}
- (void)setLastName:(NSString *)lastName {
    objc_setAssociatedObject(self, externVariableKey, lastName, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
@end

相关文章

  • 分类中声明属性

    分类(category).h中: .m中: 这种分类如果声明属性, 编译器会报警告。意思是此分类无法生成属性相关实...

  • ios 分类中如何添加数据成员

    分类中可以声明属性,因为声明属性其实就是声明设置方法和获取方法。但是分类中不可以合成属性,因为合成属性其实就是创建...

  • 关联属性

    分类中不可以添加成员变量 分类中可以声明属性,分类中声明属性只会生成方法的声明,但不会生成成员变量和方法的实现。 ...

  • iOS 中协议中可以定义属性及定义属性的方式方法

    iOS中协议中和分类中是可以用@property形式声明属性的,只不过在协议、分类中声明的属性,只有对应的sett...

  • 333,iOS 中protocol中可以定义@property及

    iOS中协议中和分类中是可以用@property形式声明属性的,只不过在协议、分类中声明的属性,只有对应的sett...

  • 6-关联对象

    属性 在类中声明一个属性会生成成员变量并声明和实现对应的set,get方法 在分类中声明一个属性只会声明对应的se...

  • Runtime | Category | 分类添加属性

    准备工作 导入需要的头文件 创建分类并声明一个属性 分类中属性实现 代码调用

  • Objective-C 使用关联对象给Category添加属性

    实现过程 在类中声明属性,会生成setter、getter、成员变量 在分类中声明属性,只会生成setter个ge...

  • 分类和扩展的区别

    分类只能扩展方法,不能扩展属性和实例变量,如果包含成员变量会直接报错! 如果分类中声明了一个属性,那么分类中只会生...

  • Ios面试复习--Category

    1.分类使用的注意事项 --1.分类中不能声明实例变量 和 属性(@property) --2.在分类中实现和类同...

网友评论

      本文标题:分类中声明属性

      本文链接:https://www.haomeiwen.com/subject/cvlxpttx.html