Objective c 我怎样才能添加属性;“目标-c扩展”;到实现已知协议的匿名类
我有一个没有源代码的现有类,我想 向类中添加属性。私有类实现了一个公开的Objective c 我怎样才能添加属性;“目标-c扩展”;到实现已知协议的匿名类,objective-c,Objective C,我有一个没有源代码的现有类,我想 向类中添加属性。私有类实现了一个公开的已知协议,但类类型未公开 发生了一些回调,我收到了名为answer的对象 我想扩展ComplexNumber类型以具有更多属性, e、 g 这里似乎有两个问题: 获取对私有类的访问权限 向其添加属性 如果您知道私有类的名称,您可以简单地使用它来再次定义它: // SomeClass.h @interface SomeClass : NSObject <ComplexNumber> @end 可能重复:@
已知协议
,但类类型未公开
发生了一些回调,我收到了名为answer
的对象
我想扩展ComplexNumber类型以具有更多属性,
e、 g
这里似乎有两个问题:
- 获取对私有类的访问权限
- 向其添加属性
// SomeClass.h
@interface SomeClass : NSObject <ComplexNumber>
@end
可能重复:@DanielePantaleone它似乎不相关,这是专门针对匿名类的,您提到的问题中的示例不是匿名类。Objective-C不支持匿名类。@DanielePantaleone我将如何称呼
idanswer
该类未知(已公开)?-我解释为匿名。id是指向objective-c对象的指针。当您使用idanswer时,您的意思是“答案”是符合ComplexNumber协议的objective-c对象。
if (((NSObject*)answer).offline) {
//
}
// SomeClass.h
@interface SomeClass : NSObject <ComplexNumber>
@end
// ComplexNumber.h
@protocol ComplexNumber <NSObject>
@property (assign) BOOL offline;
@end
//ComplexNumber.m
@import ObjectiveC;
@implementation NSObject (ComplexNumber)
static void *ComplexNumberKey = &ComplexNumberKey;
-(void)setOffline:(BOOL)offline
{
objc_setAssociatedObject(self, &ComplexNumberKey, @(offline), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
-(BOOL)offline
{
NSNumber *offline = objc_getAssociatedObject(self, &ComplexNumberKey);
return offline.boolValue;
}
@end