相关疑难解决方法(0)

如何在对象中使用objc_setAssociatedObject/objc_getAssociatedObject?

如果我在类别实现中使用objc_setAssociatedObject/objc_getAssociatedObject将模拟实例变量存储在setter方法中,那么我将如何访问getter方法中的键,因为setter方法中声明的任何变量都不在getter方法的范围内?

编辑:为了澄清,如果我使用以下模式,我应该在哪里声明STRING_KEY,以便我可以在setter和getter方法中使用它.

@interface NSView (simulateVar)
-(void)setSimualtedString:(NSString *)myString;
-(NSString *)simulatedString;
@end

@implementation NSView (simulateVar)

-(void)setSimualtedString: (NSString *)myString
{
    objc_setAssociatedObject(self, &STRING_KEY, myString, OBJC_ASSOCIATION_RETAIN);
}

-(NSString *)simulatedString
{
    return (NSString *)objc_getAssociatedObject(self, &STRING_KEY);
}

@end
Run Code Online (Sandbox Code Playgroud)

objective-c categories

65
推荐指数
6
解决办法
3万
查看次数

如何在Objective-C中将变量添加到类别?

需要创建一个带有新变量的类别(类型为NSArray).

OriginalClass + Extension.h:

@interface OriginalClass (Extension) {
    NSArray *_array;
}

@property (nonatomic, retain) NSArray *array;

@end
Run Code Online (Sandbox Code Playgroud)

但我得到了错误:Cannot declare variable inside @interface or @protocol.

请帮忙解决问题.

objective-c categories ios

6
推荐指数
1
解决办法
8021
查看次数

标签 统计

categories ×2

objective-c ×2

ios ×1