我需要公开我在扩展的对象中实现的KVO方法:
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary<NSString *,
id> *)change
context:(void *)context
为此,我需要为extends填写公开的方法参数。 如何指定数据类型NSString *,void *和NSDictionary *,因为仅使用NSString,interop.types.void和NSDictionary似乎没有帮助。
答案 0 :(得分:0)
对于(NSString *),只需将该方法传递给普通的JavaScript字符串,它就会自动编组为NSString。
对于(void *),我希望你能够传递interop.Reference的任何实例。
对于(NSDictionary *),您需要在JavaScript中实例化NSDictionary并将其传递给该函数。
以下是一个例子来说明:
let myObject = NSObject.alloc().init();
let dictionary = NSDictionary.alloc.init();
// For this example, let's pretend that the context can be a buffer of arbitrary length.
let length = 4,
buffer = interop.alloc(length),
bufferReference = new interop.Reference(interop.types.uint8, buffer);
observeValueForKeyPathOfObjectChangeContext('my path', myObject, dictionary, bufferReference);
您的方法签名为字典指定了一个轻量级泛型类型,尽管我听说Objective-C运行时并没有真正强制执行它,而且它只是在预编译器中强制执行。
如果您发现此设置不适合您,您可以在Objective-C中为您的类实现包装器或辅助函数,以帮助简化编组。