首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扩展现有对象(ISA Swizzling?)

扩展现有对象(ISA Swizzling?)
EN

Stack Overflow用户
提问于 2017-12-14 22:54:04
回答 0查看 85关注 0票数 0

下面的问题:我从一个框架收到一个对象(它不是实例化的),我想扩展它。当我创建一个类别时,问题是,它对现有的对象没有影响。

我想到了isa swizzling。因此,让isa字段指向扩展的“选择器列表”。但这似乎是不可能的?(它的语法?)

有没有人知道更好的方法呢?

这就是代码:

代码语言:javascript
复制
- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray<CBATTRequest *> *)requests {
      //want to do something that uses the extension
}

我想扩展CBATTRequest。我认为问题出在CoreBluetooth?

这是我如何创建我的类别:

BLERequestable.h

代码语言:javascript
复制
@protocol BLERequestable <NSObject>

- (nonnull NSString *)getCentralUUID;
- (nonnull NSString *)getCharacteristicUUID;
- (nullable NSData*)getData;
- (void)setData:(nullable NSData *) data;

@end

CBATTRequest+Requestable.h

代码语言:javascript
复制
#import <CoreBluetooth/CoreBluetooth.h>
#import "BLERequestable.h"

@interface CBATTRequest (Requestable) <BLERequestable>

@end

CBATTRequest+Requestable.m

代码语言:javascript
复制
#import "CBATTRequest+Requestable.h"

@implementation CBATTRequest (Requestable)

 - (NSString *)getCentralUUID {
    return self.central.identifier.UUIDString;
}

- (NSString *)getCharacteristicUUID {
    return self.characteristic.UUID.UUIDString;
}

- (NSData*)getData {
    return self.value;
}

- (void)setData:(NSData *) data {
    self.value = data;
}


@end

我将Category导入到我想要使用的任何地方。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47816257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档