如果我从一个API获得NSData*并且需要将其转换为另一个API的std :: vector,那么有没有办法安全地执行此操作而不复制NSData中的字节(假设一个非常大的NSData*)?
考虑一下:
@protocol FooExport <JSExport>
- (void)method1:(NSString *)param1;
- (void)method2:(NSString *)param1 param2:(NSString *)param2;
@end
@interface Foo : NSObject <FooExport>
@end
@implementation Foo
- (void)method1:(NSString *)param1 {
NSLog(@"method1");
}
- (void)method2:(NSString *)param1 param2:(NSString *)param2 {
NSLog(@"method2");
}
@end
{
sContext = [[JSContext alloc] init];
if (sContext)
{
sContext[@"foo"] = [[Foo alloc] init];
[sContext evaluateScript:@"foo.method1(\"foo\");"]; // method1 is called
[sContext evaluateScript:@"foo.method2(\"foo\", \"bar\");"]; // method2 is NOT called
}
}
Run Code Online (Sandbox Code Playgroud)
调用method1就好了但是从不调用method2.
如果我按如下方式更改method2:
@protocol FooExport <JSExport>
- (void)method1:(NSString *)param1;
- (void)method2:(NSString *)param1;
@end
Run Code Online (Sandbox Code Playgroud)
method2现在通过[sContext evaluateScript:@"foo.method2(\"foo …