小编Tom*_*Tom的帖子

从本机代码调用另一个包的静态java方法

例如,假设在Android中,我需要android.os.SystemClock.elapsedRealtime()从本机代码的一部分调用静态方法,该方法返回一个long.在mylib.c文件中,我有

JNIEXPORT jlong JNICALL 
Java_com_mpackage_MyClass_nativeMethod(JNIEnv *env, jobject obj){

  jclass cls = (*env)->GetObjectClass(env, obj);
  jmethodID mid = (*env)->GetStaticMethodID(env, cls, "android.os.SystemClock.elapsedRealtime", "(V)J");

  if (mid == 0)
    return 0L;

  return CallStaticLongMethod(cls, mid);
}
Run Code Online (Sandbox Code Playgroud)

在java中MyClass.class,我有其他

static {System.loadLibrary("myLib");}
native long nativeMethod();
Run Code Online (Sandbox Code Playgroud)

但是当我调用它时,我收到以下错误:

ERROR/AndroidRuntime(628): java.lang.NoSuchMethodError:
android.os.SystemClock.elapsedRealtime()
Run Code Online (Sandbox Code Playgroud)

mid在线的声明.我认为这很简单,但我是jni的新手.

有人可以指出我的错误吗?

java java-native-interface static android android-ndk

10
推荐指数
1
解决办法
1万
查看次数

在Swift中递归调用期间的BAD_ACCESS

在玩Swift时,我遇到了崩溃的情况,我仍然没有弄明白为什么.

我们来定义:

class TestClass {

    var iteration: Int = 0

    func tick() -> Void{
        if iteration > 100000 {
            print("Done!")
            return
        }
        iteration++
        tick()
    }
}
Run Code Online (Sandbox Code Playgroud)

tick()函数调用自身并且每次递增iteration.任何类型的电话

let test = TestClass()
test.tick()
Run Code Online (Sandbox Code Playgroud)

在相当少的递归(我的iMac上大约50000)之后程序崩溃,并出现EXC_BAD_ACCESS错误:EXC_BAD_ACCESS

如果我定义一个类似struct而不是a class,则没有崩溃(至少不在这些限制内).请注意,当它崩溃时,程序只使用几MB的RAM.

我无法解释为什么会崩溃.有人有解释吗?这个callbackStorage值似乎很可疑,但我没有找到任何指针.

recursion swift

6
推荐指数
2
解决办法
947
查看次数

比较两个布尔数组的最有效方法是什么?

我有一个a10个布尔数组(或等价数字<1024的二进制表示).我想这个数组比较大集阵列b[i]通过以下方式相同大小的布尔值:该函数compare(a,b[i])将返回true如果数组中的元素a是永远 true当在同一位置的元素b[i]false.

作为java中的一个例子

boolean compare(boolean a1, boolean a2){
for (int j = 0; j<10; j++) 
   if (a1[j] && !a2[j]) 
      return false;
return true;
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的实现这个功能?如果将相应的二进制数视为整数A1(和A2)的素数分解的系数,则等效函数将是

boolean compare (int A1, int A2){
if (gcd(A1,A2)==A1) 
   return true;
else
   return false;
}
Run Code Online (Sandbox Code Playgroud)

例如,(http://www.java-tips.org/java-se-tips/java.lang/finding-greatest-common-divisor-recursively.html)

int gcd(int a, int b) {
if (b==0) 
   return a;
else
   return gcd(b, a % b);
}
Run Code Online (Sandbox Code Playgroud)

但我不认为这更有效(但我可能错了).

有没有人有想法?欢迎所有建议!

编辑:我稍后会回过头来进行一些分析......感谢您的所有建议!

java arrays compare

2
推荐指数
2
解决办法
2687
查看次数

如何在故事板中查看自定义 UIView 的轮廓?

我为一个项目制作了一个自定义 UIView。我知道如何将它插入 StoryBoard(作为通用视图,然后通过指定它的类),并且它编译并运行良好。但是,自定义视图在故事板中呈现为没有可见边框的白色矩形。这意味着当视图被取消选择时,如果窗口背景为白色,它在故事板上变得不可见。然后很难调整它的位置/大小,当我添加更多视图时会非常痛苦。

我完全理解情节提要不提供任何类型的渲染,我不是要求这样做,但是有没有任何解决方案可以将视图的边界显示为简单的边框,以便我仍然可以查看它而无需选择它?

xcode uiview ios

1
推荐指数
1
解决办法
1584
查看次数