| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 9083abc commit 582dfb4
10 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -95,9 +95,9 @@ def forceStartAccessibilityServer(): | |||
| 95 | 95 | if not fb.evaluateBooleanExpression('[UIView instancesRespondToSelector:@selector(_accessibilityElementsInContainer:)]'): | |
| 96 | 96 | #Starting accessibility server is different for simulator and device | |
| 97 | 97 | if isRunningInSimulator(): | |
| 98 | - fb.evaluateObjCExpression('(void)[[UIApplication sharedApplication] accessibilityActivate]') | ||
| 98 | + fb.evaluateExpressionValue('(void)[[UIApplication sharedApplication] accessibilityActivate]') | ||
| 99 | 99 | else: | |
| 100 | - fb.evaluateObjCExpression('(void)[[[UIApplication sharedApplication] _accessibilityBundlePrincipalClass] _accessibilityStartServer]') | ||
| 100 | + fb.evaluateExpressionValue('(void)[[[UIApplication sharedApplication] _accessibilityBundlePrincipalClass] _accessibilityStartServer]') | ||
| 101 | 101 | ||
| 102 | 102 | def accessibilityLabel(view): | |
| 103 | 103 | #using Apple private API to get real value of accessibility string for element. | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -31,7 +31,7 @@ def args(self): | |||
| 31 | 31 | ||
| 32 | 32 | def run(self, arguments, options): | |
| 33 | 33 | view = fb.evaluateInputExpression(arguments[0]) | |
| 34 | - print fb.evaluateObjCExpression('(id)[{} _autolayoutTrace]'.format(view)).GetObjectDescription() | ||
| 34 | + print fb.evaluateExpressionValue('(id)[{} _autolayoutTrace]'.format(view)).GetObjectDescription() | ||
| 35 | 35 | ||
| 36 | 36 | ||
| 37 | 37 | def setBorderOnAmbiguousViewRecursive(view, width, color): | |
@@ -41,8 +41,8 @@ def setBorderOnAmbiguousViewRecursive(view, width, color): | |||
| 41 | 41 | isAmbiguous = fb.evaluateBooleanExpression('(BOOL)[%s hasAmbiguousLayout]' % view) | |
| 42 | 42 | if isAmbiguous: | |
| 43 | 43 | layer = viewHelpers.convertToLayer(view) | |
| 44 | - fb.evaluateObjCExpression('(void)[%s setBorderWidth:(CGFloat)%s]' % (layer, width)) | ||
| 45 | - fb.evaluateObjCExpression('(void)[%s setBorderColor:(CGColorRef)[(id)[UIColor %sColor] CGColor]]' % (layer, color)) | ||
| 44 | + fb.evaluateExpressionValue('(void)[%s setBorderWidth:(CGFloat)%s]' % (layer, width)) | ||
| 45 | + fb.evaluateExpressionValue('(void)[%s setBorderColor:(CGColorRef)[(id)[UIColor %sColor] CGColor]]' % (layer, color)) | ||
| 46 | 46 | ||
| 47 | 47 | subviews = fb.evaluateExpression('(id)[%s subviews]' % view) | |
| 48 | 48 | subviewsCount = int(fb.evaluateExpression('(int)[(id)%s count]' % subviews)) | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -32,10 +32,10 @@ def options(self): | |||
| 32 | 32 | ||
| 33 | 33 | def run(self, arguments, options): | |
| 34 | 34 | if options.set: | |
| 35 | - fb.evaluateObjCExpression('(void)[CKComponentDebugController setDebugMode:YES]') | ||
| 35 | + fb.evaluateExpressionValue('(void)[CKComponentDebugController setDebugMode:YES]') | ||
| 36 | 36 | print 'Debug mode for ComponentKit has been set.' | |
| 37 | 37 | elif options.unset: | |
| 38 | - fb.evaluateObjCExpression('(void)[CKComponentDebugController setDebugMode:NO]') | ||
| 38 | + fb.evaluateExpressionValue('(void)[CKComponentDebugController setDebugMode:NO]') | ||
| 39 | 39 | print 'Debug mode for ComponentKit has been unset.' | |
| 40 | 40 | else: | |
| 41 | 41 | print 'No option for ComponentKit Debug mode specified.' | |
@@ -61,7 +61,7 @@ def run(self, arguments, options): | |||
| 61 | 61 | showViews = 'YES' if options.showViews == 'YES' else 'NO' | |
| 62 | 62 | ||
| 63 | 63 | view = fb.evaluateInputExpression(arguments[0]) | |
| 64 | - print fb.evaluateObjCExpression('(id)[CKComponentHierarchyDebugHelper componentHierarchyDescriptionForView:(UIView *)' + view + ' searchUpwards:' + upwards + ' showViews:' + showViews + ']').GetObjectDescription() | ||
| 64 | + print fb.evaluateExpressionValue('(id)[CKComponentHierarchyDebugHelper componentHierarchyDescriptionForView:(UIView *)' + view + ' searchUpwards:' + upwards + ' showViews:' + showViews + ']').GetObjectDescription() | ||
| 65 | 65 | ||
| 66 | 66 | class FBComponentsReflowCommand(fb.FBCommand): | |
| 67 | 67 | def name(self): | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -63,8 +63,8 @@ def options(self): | |||
| 63 | 63 | ||
| 64 | 64 | def run(self, args, options): | |
| 65 | 65 | def setBorder(layer, width, color, colorClass): | |
| 66 | - fb.evaluateObjCExpression('(void)[%s setBorderWidth:(CGFloat)%s]' % (layer, width)) | ||
| 67 | - fb.evaluateObjCExpression('(void)[%s setBorderColor:(CGColorRef)[(id)[%s %sColor] CGColor]]' % (layer, colorClass, color)) | ||
| 66 | + fb.evaluateExpressionValue('(void)[%s setBorderWidth:(CGFloat)%s]' % (layer, width)) | ||
| 67 | + fb.evaluateExpressionValue('(void)[%s setBorderColor:(CGColorRef)[(id)[%s %sColor] CGColor]]' % (layer, colorClass, color)) | ||
| 68 | 68 | ||
| 69 | 69 | obj = fb.evaluateInputExpression(args[0]) | |
| 70 | 70 | depth = int(options.depth) | |
@@ -114,7 +114,7 @@ def args(self): | |||
| 114 | 114 | ||
| 115 | 115 | def run(self, args, options): | |
| 116 | 116 | def setUnborder(layer): | |
| 117 | - fb.evaluateObjCExpression('(void)[%s setBorderWidth:(CGFloat)%s]' % (layer, 0)) | ||
| 117 | + fb.evaluateExpressionValue('(void)[%s setBorderWidth:(CGFloat)%s]' % (layer, 0)) | ||
| 118 | 118 | ||
| 119 | 119 | obj = args[0] | |
| 120 | 120 | depth = int(options.depth) | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -122,6 +122,6 @@ def run(self, arguments, options): | |||
| 122 | 122 | @staticmethod | |
| 123 | 123 | def taplog_callback(frame, bp_loc, internal_dict): | |
| 124 | 124 | parameterExpr = objc.functionPreambleExpressionForObjectParameterAtIndex(0) | |
| 125 | - print fb.evaluateObjCExpression('(UIView *)[[[%s allTouches] anyObject] view]' % (parameterExpr)).GetObjectDescription() | ||
| 125 | + print fb.evaluateExpressionValue('(UIView *)[[[%s allTouches] anyObject] view]' % (parameterExpr)).GetObjectDescription() | ||
| 126 | 126 | # We don't want to proceed event (click on button for example), so we just skip it | |
| 127 | 127 | lldb.debugger.HandleCommand('thread return') | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -111,7 +111,7 @@ def inputCallback(self, input): | |||
| 111 | 111 | if isMac: | |
| 112 | 112 | recursionName = '_subtreeDescription' | |
| 113 | 113 | ||
| 114 | - print fb.evaluateObjCExpression('(NSString *)[(id){} {}]'.format(oldView, recursionName)).GetObjectDescription() | ||
| 114 | + print fb.evaluateExpressionValue('(NSString *)[(id){} {}]'.format(oldView, recursionName)).GetObjectDescription() | ||
| 115 | 115 | else: | |
| 116 | 116 | print '\nI really have no idea what you meant by \'' + input + '\'... =\\\n' | |
| 117 | 117 | ||
@@ -121,7 +121,7 @@ def setCurrentView(self, view, oldView=None): | |||
| 121 | 121 | if oldView: | |
| 122 | 122 | viewHelpers.unmaskView(oldView) | |
| 123 | 123 | viewHelpers.maskView(self.currentView, 'red', '0.4') | |
| 124 | - print fb.evaluateObjCExpression('(id)' + view).GetObjectDescription() | ||
| 124 | + print fb.evaluateExpressionValue('(id)' + view).GetObjectDescription() | ||
| 125 | 125 | ||
| 126 | 126 | def superviewOfView(view): | |
| 127 | 127 | superview = fb.evaluateObjectExpression('[' + view + ' superview]') | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -94,7 +94,7 @@ def description(self): | |||
| 94 | 94 | return 'Print layer tree from the perspective of the render server.' | |
| 95 | 95 | ||
| 96 | 96 | def run(self, arguments, options): | |
| 97 | - print fb.evaluateObjCExpression('(id)[NSString stringWithCString:(char *)CARenderServerGetInfo(0, 2, 0)]').GetObjectDescription() | ||
| 97 | + print fb.evaluateExpressionValue('(id)[NSString stringWithCString:(char *)CARenderServerGetInfo(0, 2, 0)]').GetObjectDescription() | ||
| 98 | 98 | ||
| 99 | 99 | ||
| 100 | 100 | class FBPrintViewControllerHierarchyCommand(fb.FBCommand): | |
@@ -112,7 +112,7 @@ def run(self, arguments, options): | |||
| 112 | 112 | ||
| 113 | 113 | if arguments[0] == '__keyWindow_rootVC_dynamic__': | |
| 114 | 114 | if fb.evaluateBooleanExpression('[UIViewController respondsToSelector:@selector(_printHierarchy)]'): | |
| 115 | - print fb.evaluateObjCExpression('(id)[UIViewController _printHierarchy]').GetObjectDescription() | ||
| 115 | + print fb.evaluateExpressionValue('(id)[UIViewController _printHierarchy]').GetObjectDescription() | ||
| 116 | 116 | return | |
| 117 | 117 | ||
| 118 | 118 | arguments[0] = '(id)[(id)[[UIApplication sharedApplication] keyWindow] rootViewController]' | |
@@ -289,7 +289,7 @@ def run(self, arguments, options): | |||
| 289 | 289 | ivarTypeCommand = '((char *)ivar_getTypeEncoding((void*)object_getInstanceVariable((id){}, \"{}\", 0)))[0]'.format(object, ivarName) | |
| 290 | 290 | ivarTypeEncodingFirstChar = fb.evaluateExpression(ivarTypeCommand) | |
| 291 | 291 | ||
| 292 | - result = fb.evaluateObjCExpression('(({} *)({}))->{}'.format(printCommand, objectClass, object, ivarName)) | ||
| 292 | + result = fb.evaluateExpressionValue('(({} *)({}))->{}'.format(printCommand, objectClass, object, ivarName)) | ||
| 293 | 293 | return result.GetObjectDescription() if '@' in ivarTypeEncodingFirstChar else result.GetValue() | |
| 294 | 294 | ||
| 295 | 295 | class FBPrintKeyPath(fb.FBCommand): | |
@@ -312,7 +312,7 @@ def run(self, arguments, options): | |||
| 312 | 312 | objectToMessage, keypath = command.split('.', 1) | |
| 313 | 313 | object = fb.evaluateObjectExpression(objectToMessage) | |
| 314 | 314 | printCommand = '(id)[{} valueForKeyPath:@"{}"]'.format(object, keypath) | |
| 315 | - print fb.evaluateObjCExpression(printCommand).GetObjectDescription() | ||
| 315 | + print fb.evaluateExpressionValue(printCommand).GetObjectDescription() | ||
| 316 | 316 | ||
| 317 | 317 | ||
| 318 | 318 | class FBPrintApplicationDocumentsPath(fb.FBCommand): | |
@@ -409,7 +409,7 @@ def run(self, arguments, option): | |||
| 409 | 409 | enc = 0x9c000100 | |
| 410 | 410 | ||
| 411 | 411 | print_command = '(id)[[NSString alloc] initWithData:{} encoding:{}]'.format(arguments[0], enc) | |
| 412 | - print fb.evaluateObjCExpression(print_command).GetObjectDescription() | ||
| 412 | + print fb.evaluateExpressionValue(print_command).GetObjectDescription() | ||
| 413 | 413 | ||
| 414 | 414 | class FBPrintTargetActions(fb.FBCommand): | |
| 415 | 415 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -83,9 +83,9 @@ def _showColor(color): | |||
| 83 | 83 | colorToUse = '[UIColor colorWithCIColor:(CIColor *){}]'.format(color) | |
| 84 | 84 | ||
| 85 | 85 | imageSize = 58 | |
| 86 | - fb.evaluateObjCExpression('(void)UIGraphicsBeginImageContextWithOptions((CGSize)CGSizeMake({imageSize}, {imageSize}), NO, 0.0)'.format(imageSize=imageSize)) | ||
| 87 | - fb.evaluateObjCExpression('(void)[(id){} setFill]'.format(colorToUse)) | ||
| 88 | - fb.evaluateObjCExpression('(void)UIRectFill((CGRect)CGRectMake(0.0, 0.0, {imageSize}, {imageSize}))'.format(imageSize=imageSize)) | ||
| 86 | + fb.evaluateExpressionValue('(void)UIGraphicsBeginImageContextWithOptions((CGSize)CGSizeMake({imageSize}, {imageSize}), NO, 0.0)'.format(imageSize=imageSize)) | ||
| 87 | + fb.evaluateExpressionValue('(void)[(id){} setFill]'.format(colorToUse)) | ||
| 88 | + fb.evaluateExpressionValue('(void)UIRectFill((CGRect)CGRectMake(0.0, 0.0, {imageSize}, {imageSize}))'.format(imageSize=imageSize)) | ||
| 89 | 89 | ||
| 90 | 90 | frame = lldb.debugger.GetSelectedTarget().GetProcess().GetSelectedThread().GetSelectedFrame() | |
| 91 | 91 | result = frame.EvaluateExpression('(UIImage *)UIGraphicsGetImageFromCurrentImageContext()') | |
@@ -96,7 +96,7 @@ def _showColor(color): | |||
| 96 | 96 | image = result.GetValue() | |
| 97 | 97 | _showImage(image) | |
| 98 | 98 | ||
| 99 | - fb.evaluateObjCExpression('(void)UIGraphicsEndImageContext()') | ||
| 99 | + fb.evaluateExpressionValue('(void)UIGraphicsEndImageContext()') | ||
| 100 | 100 | ||
| 101 | 101 | def _showLayer(layer): | |
| 102 | 102 | layer = '(' + layer + ')' | |
@@ -108,8 +108,8 @@ def _showLayer(layer): | |||
| 108 | 108 | print 'Nothing to see here - the size of this element is {} x {}.'.format(width, height) | |
| 109 | 109 | return | |
| 110 | 110 | ||
| 111 | - fb.evaluateObjCExpression('(void)UIGraphicsBeginImageContextWithOptions(' + size + ', NO, 0.0)') | ||
| 112 | - fb.evaluateObjCExpression('(void)[(id)' + layer + ' renderInContext:(void *)UIGraphicsGetCurrentContext()]') | ||
| 111 | + fb.evaluateExpressionValue('(void)UIGraphicsBeginImageContextWithOptions(' + size + ', NO, 0.0)') | ||
| 112 | + fb.evaluateExpressionValue('(void)[(id)' + layer + ' renderInContext:(void *)UIGraphicsGetCurrentContext()]') | ||
| 113 | 113 | ||
| 114 | 114 | frame = lldb.debugger.GetSelectedTarget().GetProcess().GetSelectedThread().GetSelectedFrame() | |
| 115 | 115 | result = frame.EvaluateExpression('(UIImage *)UIGraphicsGetImageFromCurrentImageContext()') | |
@@ -119,7 +119,7 @@ def _showLayer(layer): | |||
| 119 | 119 | image = result.GetValue() | |
| 120 | 120 | _showImage(image) | |
| 121 | 121 | ||
| 122 | - fb.evaluateObjCExpression('(void)UIGraphicsEndImageContext()') | ||
| 122 | + fb.evaluateExpressionValue('(void)UIGraphicsEndImageContext()') | ||
| 123 | 123 | ||
| 124 | 124 | def _dataIsImage(data): | |
| 125 | 125 | data = '(' + data + ')' | |
@@ -163,7 +163,7 @@ def _visualize(target): | |||
| 163 | 163 | if _dataIsImage(target): | |
| 164 | 164 | _showImage('(id)[UIImage imageWithData:' + target + ']') | |
| 165 | 165 | elif _dataIsString(target): | |
| 166 | - print fb.evaluateObjCExpression('(id)[[NSString alloc] initWithData:' + target + ' encoding:4]').GetObjectDescription() | ||
| 166 | + print fb.evaluateExpressionValue('(id)[[NSString alloc] initWithData:' + target + ' encoding:4]').GetObjectDescription() | ||
| 167 | 167 | else: | |
| 168 | 168 | print 'Data isn\'t an image and isn\'t a string.' | |
| 169 | 169 | else: | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -36,10 +36,12 @@ def description(self): | |||
| 36 | 36 | def run(self, arguments, option): | |
| 37 | 37 | pass | |
| 38 | 38 | ||
| 39 | - def evaluateObjCExpression(expression, printErrors=True): | ||
| 39 | + # evaluates expression in Objective-C++ context, so it will work even for | ||
| 40 | + # Swift projects | ||
| 41 | + def evaluateExpressionValue(expression, printErrors=True): | ||
| 40 | 42 | frame = lldb.debugger.GetSelectedTarget().GetProcess().GetSelectedThread().GetSelectedFrame() | |
| 41 | 43 | options = lldb.SBExpressionOptions() | |
| 42 | - options.SetLanguage(lldb.eLanguageTypeObjC) | ||
| 44 | + options.SetLanguage(lldb.eLanguageTypeObjC_plus_plus) | ||
| 43 | 45 | value = frame.EvaluateExpression(expression, options) | |
| 44 | 46 | error = value.GetError() | |
| 45 | 47 | ||
@@ -56,7 +58,7 @@ def evaluateObjCExpression(expression, printErrors=True): | |||
| 56 | 58 | def evaluateInputExpression(expression, printErrors=True): | |
| 57 | 59 | # HACK | |
| 58 | 60 | if expression.startswith('(id)'): | |
| 59 | - return evaluateObjCExpression(expression, printErrors).GetValue() | ||
| 61 | + return evaluateExpressionValue(expression, printErrors).GetValue() | ||
| 60 | 62 | ||
| 61 | 63 | frame = lldb.debugger.GetSelectedTarget().GetProcess().GetSelectedThread().GetSelectedFrame() | |
| 62 | 64 | value = frame.EvaluateExpression(expression) | |
@@ -67,21 +69,6 @@ def evaluateInputExpression(expression, printErrors=True): | |||
| 67 | 69 | ||
| 68 | 70 | return value.GetValue() | |
| 69 | 71 | ||
| 70 | - def evaluateExpressionValueWithLanguage(expression, language, printErrors): | ||
| 71 | - # lldb.frame is supposed to contain the right frame, but it doesnt :/ so do the dance | ||
| 72 | - frame = lldb.debugger.GetSelectedTarget().GetProcess().GetSelectedThread().GetSelectedFrame() | ||
| 73 | - expr_options = lldb.SBExpressionOptions() | ||
| 74 | - expr_options.SetLanguage(language) # requires lldb r210874 (2014-06-13) / Xcode 6 | ||
| 75 | - value = frame.EvaluateExpression(expression, expr_options) | ||
| 76 | - if printErrors and value.GetError() is not None and str(value.GetError()) != 'success': | ||
| 77 | - print value.GetError() | ||
| 78 | - return value | ||
| 79 | - | ||
| 80 | - # evaluates expression in Objective-C++ context, so it will work even for | ||
| 81 | - # Swift projects | ||
| 82 | - def evaluateExpressionValue(expression, printErrors=True): | ||
| 83 | - return evaluateExpressionValueWithLanguage(expression, lldb.eLanguageTypeObjC_plus_plus, printErrors) | ||
| 84 | - | ||
| 85 | 72 | def evaluateIntegerExpression(expression, printErrors=True): | |
| 86 | 73 | output = evaluateExpression('(int)(' + expression + ')', printErrors).replace('\'', '') | |
| 87 | 74 | if output.startswith('\\x'): # Booleans may display as \x01 (Hex) | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -13,10 +13,10 @@ | |||
| 13 | 13 | import fblldbobjcruntimehelpers as runtimeHelpers | |
| 14 | 14 | ||
| 15 | 15 | def flushCoreAnimationTransaction(): | |
| 16 | - fb.evaluateObjCExpression('(void)[CATransaction flush]') | ||
| 16 | + fb.evaluateExpressionValue('(void)[CATransaction flush]') | ||
| 17 | 17 | ||
| 18 | 18 | def setViewHidden(object, hidden): | |
| 19 | - fb.evaluateObjCExpression('(void)[{} setHidden:{}]'.format(object, int(hidden))) | ||
| 19 | + fb.evaluateExpressionValue('(void)[{} setHidden:{}]'.format(object, int(hidden))) | ||
| 20 | 20 | flushCoreAnimationTransaction() | |
| 21 | 21 | ||
| 22 | 22 | def maskView(viewOrLayer, color, alpha): | |
@@ -31,16 +31,16 @@ def maskView(viewOrLayer, color, alpha): | |||
| 31 | 31 | size.GetChildMemberWithName('height').GetValue()) | |
| 32 | 32 | mask = fb.evaluateExpression('(id)[[UIView alloc] initWithFrame:%s]' % rectExpr) | |
| 33 | 33 | ||
| 34 | - fb.evaluateObjCExpression('(void)[%s setTag:(NSInteger)%s]' % (mask, viewOrLayer)) | ||
| 35 | - fb.evaluateObjCExpression('(void)[%s setBackgroundColor:[UIColor %sColor]]' % (mask, color)) | ||
| 36 | - fb.evaluateObjCExpression('(void)[%s setAlpha:(CGFloat)%s]' % (mask, alpha)) | ||
| 37 | - fb.evaluateObjCExpression('(void)[%s addSubview:%s]' % (window, mask)) | ||
| 34 | + fb.evaluateExpressionValue('(void)[%s setTag:(NSInteger)%s]' % (mask, viewOrLayer)) | ||
| 35 | + fb.evaluateExpressionValue('(void)[%s setBackgroundColor:[UIColor %sColor]]' % (mask, color)) | ||
| 36 | + fb.evaluateExpressionValue('(void)[%s setAlpha:(CGFloat)%s]' % (mask, alpha)) | ||
| 37 | + fb.evaluateExpressionValue('(void)[%s addSubview:%s]' % (window, mask)) | ||
| 38 | 38 | flushCoreAnimationTransaction() | |
| 39 | 39 | ||
| 40 | 40 | def unmaskView(viewOrLayer): | |
| 41 | 41 | window = fb.evaluateExpression('(UIWindow *)[[UIApplication sharedApplication] keyWindow]') | |
| 42 | 42 | mask = fb.evaluateExpression('(UIView *)[%s viewWithTag:(NSInteger)%s]' % (window, viewOrLayer)) | |
| 43 | - fb.evaluateObjCExpression('(void)[%s removeFromSuperview]' % mask) | ||
| 43 | + fb.evaluateExpressionValue('(void)[%s removeFromSuperview]' % mask) | ||
| 44 | 44 | flushCoreAnimationTransaction() | |
| 45 | 45 | ||
| 46 | 46 | def convertPoint(x, y, fromViewOrLayer, toViewOrLayer): | |
@@ -113,4 +113,4 @@ def upwardsRecursiveDescription(view, maxDepth=0): | |||
| 113 | 113 | return builder | |
| 114 | 114 | ||
| 115 | 115 | def slowAnimation(speed=1): | |
| 116 | - fb.evaluateObjCExpression('(void)[[[UIApplication sharedApplication] windows] setValue:@(%s) forKeyPath:@"layer.speed"]' % speed) | ||
| 116 | + fb.evaluateExpressionValue('(void)[[[UIApplication sharedApplication] windows] setValue:@(%s) forKeyPath:@"layer.speed"]' % speed) | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments