ios - 在类别中声明实例变量

标签 ios objective-c objective-c-category

我为 NSDictionary 定义了一个类别

NSDictionary+AddMyFunc.m

// Compiler error: expected identifier or '('
@implementation NSDictionary (AddMyFunc) { 
    NSInteger myNum;
}

- (void)myFunc {
  //Compiler error: use of undeclared identifier 'myNum'
  myNum = //some operation
}

@end

我想定义一个实例变量 myNum,我按照上面的方式做了,但是我得到了上面显示的编译器错误。 为什么我会收到这些错误,如何消除它们?

最佳答案

您可以使用关联对象向类别添加属性

#import <objc/runtime.h> 

static const void *ImageTagKey = &ImageTagKey;

@implementation UIImage (Tagged)

- (void)setTag:(NSSting *)tag
{
    objc_setAssociatedObject(self, ImageTagKey, tag, OBJC_ASSOCIATION_COPY_NONATOMIC);
}

- (NSString *)tag
{
    return objc_getAssociatedObject(self, ImageTagKey);
}

@end

关于ios - 在类别中声明实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38121274/

相关文章:

ios - 将一个变量从一个 View Controller 传递到另一个 View Controller

objective-c - 在 Objective C 中本地化实现文件

iphone - 滚动 UIScrollView 时如何缩放

objective-c - const 全局字符串文字已损坏

ios - NSObject 的类别可用于每个 NSObject 子类,即使没有在任何地方导入该类别的 .h 文件

objective-c - Swift 代码看不到在 Objective-C 类别中声明的方法

ios - swift 和 spritekit 中的碰撞

ios - GLKView + CIImage with Alpha + AVFoundation = Trippy Mess

objective-c - 协议(protocol)与类别

ios - 在 Swift 中调用时缺少参数 'coder' 的参数