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