我一直在调查这个错误整整三天,但仍然没有进展.我希望我能从这里得到一些提示.
我想要做的是使用ASM库将MethodNode内联到MethodHandle调用站点(#5,#17和#30).为简化起见,#5处的MethodHandle引用静态方法static Functions.isFooString(String)boolen.
在呼叫站点,内联之前的指令就像
//Before
stack=3, locals=3, args_size=3
0: aload_0
1: getfield #15 // Field guard:Ljava/lang/invoke/MethodHandle;
4: aload_1
5: invokevirtual #29 // Method java/lang/invoke/MethodHandle.invokeExact:(Ljava/lang/String;)Z
8: ifeq 24
11: aload_0
12: getfield #17 // Field trueTarget:Ljava/lang/invoke/MethodHandle;
15: aload_1
16: aload_2
17: invokevirtual #31 // Method java/lang/invoke/MethodHandle.invokeExact:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
20: checkcast #33 // class java/lang/String
23: areturn
24: aload_0
25: getfield #19 // Field falseTarget:Ljava/lang/invoke/MethodHandle;
28: aload_1
29: aload_2
30: invokevirtual #31 // Method java/lang/invoke/MethodHandle.invokeExact:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
33: checkcast #33 // class java/lang/String
36: …Run Code Online (Sandbox Code Playgroud) 有没有办法在多个连接的iOS设备上运行UIAutomation脚本?目前我使用带-w开关的仪器以及每个设备的UDID?
我很感激你的想法.
逻辑上是否有任何区别
if (name.startsWith("a"){
return true;
} else if (name.startsWith("b") {
return true;
} else if (name.startsWith("c") {
return true;
}
Run Code Online (Sandbox Code Playgroud)
和
if(name.startsWith("a") || name.startsWith("b") || name.startsWith("c") ){
return true;
}
Run Code Online (Sandbox Code Playgroud)
我更喜欢第二个,因为它对我来说很优雅.我想明白"有什么不同吗?"