Skip to content

Commit c4adb94

Browse files
Add debug log method.
1 parent 802cb35 commit c4adb94

4 files changed

Lines changed: 27 additions & 5 deletions

File tree

Classes/JSBScriptingSupport.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ JSExportAs(dispatch_get_global_queue,
3030
+ (id)dispatch_get_main_queue;
3131

3232
@optional
33+
JSExportAs(log,
34+
+ (void)log:(NSString *)format arguments:(NSArray *)arguments);
3335
JSExportAs(dump,
3436
+ (void)dump:(id)object);
3537

Classes/JSBScriptingSupport.m

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,13 @@ + (void)initialize
5959
@" dispatch_get_main_queue: function() {\n"
6060
@" return __JSB_JSBScriptingSupport.dispatch_get_main_queue();\n"
6161
@" },\n"
62+
@" log: function(format) {\n"
63+
@" var args = [];\n"
64+
@" for (var i = 1; i < arguments.length; i++) {\n"
65+
@" args.push(arguments[i]);\n"
66+
@" }\n"
67+
@" return __JSB_JSBScriptingSupport.log(format, args);\n"
68+
@" },\n"
6269
@" dump: function(obj) {\n"
6370
@" return __JSB_JSBScriptingSupport.dump(obj);\n"
6471
@" }\n"
@@ -192,12 +199,11 @@ + (id)dispatch_get_main_queue
192199

193200
#pragma mark - for debug
194201

195-
+ (void)log:(NSString *)format, ...
202+
+ (void)log:(NSString *)format arguments:(NSArray *)arguments
196203
{
197-
va_list args;
198-
va_start(args, format);
199-
NSString *result = [[NSString alloc] initWithFormat:format arguments:args];
200-
va_end(args);
204+
__unsafe_unretained id *argList = createVariableArgumentListsFromArray(arguments);
205+
NSString *result = [[NSString alloc] initWithFormat:format, *argList];
206+
free(argList);
201207

202208
NSLog(@"%@", result);
203209
}

Classes/Private/JSBMessageForwarding.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,5 @@ void setupForwardingImplementations(Class targetClass, Class cls, JSValue *insta
3232
void forwardInvocation(id self, SEL _cmd, NSInvocation *invocation);
3333
NSMethodSignature *methodSignatureForSelector(id self, SEL _cmd, SEL selector);
3434
BOOL respondsToSelector(id self, SEL _cmd, SEL selector);
35+
36+
__unsafe_unretained id *createVariableArgumentListsFromArray(NSArray *arguments);

Classes/Private/JSBMessageForwarding.m

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -386,3 +386,15 @@ BOOL respondsToSelector(id self, SEL _cmd, SEL selector)
386386

387387
return !function.isUndefined;
388388
}
389+
390+
#pragma mark -
391+
392+
__unsafe_unretained id *createVariableArgumentListsFromArray(NSArray *arguments)
393+
{
394+
__unsafe_unretained id *argList = (__unsafe_unretained id *) calloc(1UL, sizeof(id) * arguments.count);
395+
for (NSInteger i = 0; i < arguments.count; i++) {
396+
argList[i] = arguments[i];
397+
}
398+
399+
return argList;
400+
}

0 commit comments

Comments
 (0)