我有来自Crashlytics的这样一份报告:
Thread : Crashed: com.apple.main-thread
0 libobjc.A.dylib 0x000000019503fbd0 objc_msgSend + 16
1 CoreFoundation 0x00000001836e5458 CFRelease + 524
2 CoreFoundation 0x00000001836f1a18 -[__NSArrayM dealloc] + 152
3 libobjc.A.dylib 0x0000000195045724 (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 564
4 CoreFoundation 0x00000001836e9074 _CFAutoreleasePoolPop + 28
5 Foundation 0x000000018461a588 -[NSAutoreleasePool release] + 148
6 UIKit 0x00000001882b4460 -[UIApplication _run] + 588
7 UIKit 0x00000001882aefac UIApplicationMain + 1488
Run Code Online (Sandbox Code Playgroud)
有什么办法可以解决这个问题吗?它发生在客户设备上,所以我没有机会重现它.
我知道从11.0开始支持命名颜色,但是我们的项目针对的是iOS 9.0,我们能够使用Xcode 9.0 / 9.1成功编译它,因为命名颜色仅在情节提要中而不是在运行时使用。
切换到Xcode 9.2后,该项目无法编译:
命名的颜色在iOS 11.0之前不起作用
情况:我们在不同的后端 URL 上安装了 PROD 和 DEV APN 证书。生产证书有效!:推送已交付。
DEV 证书不起作用,苹果服务器返回错误代码 7(无效令牌)。我已经检查了所有的东西,但可能我仍然遗漏了一些东西。
应该真的有用吧?
我记录了我的应用程序崩溃,但是我的应用程序(5 Control)中的最后一行仅指向方法开始。我怎么知道问题出在哪一行?
0 CoreFoundation 0x185f0af50 __exceptionPreprocess + 132
1 libobjc.A.dylib 0x1924141fc objc_exception_throw + 60
2 CoreFoundation 0x185f0fc04 -[NSObject(NSObject) doesNotRecognizeSelector:] + 220
3 CoreFoundation 0x185f0d930 ___forwarding___ + 912
4 CoreFoundation 0x185e2d5dc _CF_forwarding_prep_0 + 92
5 Control 0x10005acb4 -[PaymillPaymentService handleTransactionListRequest:] (PaymillPaymentService.m:211)
6 Foundation 0x186a7416c __103+[__NSOperationInternal _observeValueForKeyPath:ofObject:changeKind:oldValue:newValue:indexes:context:]_block_invoke96 + 28
7 libdispatch.dylib 0x1929ec014 _dispatch_call_block_and_release + 24
8 libdispatch.dylib 0x1929ebfd4 _dispatch_client_callout + 16
9 libdispatch.dylib 0x1929f32b8 _dispatch_root_queue_drain + 556
10 libdispatch.dylib 0x1929f34fc _dispatch_worker_thread2 + 76
11 libsystem_pthread.dylib 0x192b816bc _pthread_wqthread + 356
12 libsystem_pthread.dylib 0x192b8154c start_wqthread …
Run Code Online (Sandbox Code Playgroud) 我正在使用注释来确保参数不为null,假设这会导致编译器检查.
public @Nullable ApplicationAccount accountForKey(@NonNull String key) {
return accounts.get(key);
}
Run Code Online (Sandbox Code Playgroud)
但是,通过运行此代码,我在此行上得到了NullPointerException
java.util.concurrent.ConcurrentHashMap.get (ConcurrentHashMap.java:883)
Run Code Online (Sandbox Code Playgroud)
那么注释有什么意义呢?
如果我像这样写额外的支票,那就更加模糊了
return key!=null?accounts.get(key):null;
Run Code Online (Sandbox Code Playgroud)
Android Studio警告我,检查没用!
更新:完整调用堆栈:
Caused by java.lang.NullPointerException
at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:883)
at co.getcontrol.services.MerchantCenter.accountForKey(MerchantCenter.java:72)
at co.getcontrol.model.customers.CustomersAggregator.loadCustomerDetails(CustomersAggregator.java:91)
at co.getcontrol.model.customers.CustomerDetailsPresenter.callData(CustomerDetailsPresenter.java:39)
at co.getcontrol.reskin.ui.customers.CustomerDetailsViewFragment.onCreateView(CustomerDetailsViewFragment.java:152)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:339)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:602)
at co.getcontrol.ui.ControlActivity.onStart(ControlActivity.java:13)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1174)
at android.app.Activity.performStart(Activity.java:5353)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2352)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2441)
at android.app.ActivityThread.access$900(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5345)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:828)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644)
at dalvik.system.NativeStart.main(NativeStart.java)
Run Code Online (Sandbox Code Playgroud) java android nullpointerexception non-nullable android-annotations
我越来越
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'float java.lang.Number.floatValue()'
在以下代码上:
val localHistory: ArrayList<Float> = ArrayList<Float>()
...
val strHistory = localHistory.map { value -> decoration.decoratedValue(ref.format, value) }
Run Code Online (Sandbox Code Playgroud)
我刚刚了解到ArrayList可能包含空值(oookay)。那将意味着映射转换闭包中的值可能为NULL,不是吗?
但这不能是因为值不是可选类型,并且编译器说if(value!= null)将始终为true。
那么问题是在这种情况下如何避免NPE?
我正在 Eclipse 中开发 Spring-Boot 应用程序。如果我第一次运行该应用程序,它会启动并在端口 8000 上自行安装。但目前我每次想重新运行该应用程序时都必须停止该应用程序,否则会出现错误
嵌入式 servlet 容器无法启动。端口 8000 已被使用。
所以我理解为 Eclipse 无法自动关闭现有实例?每次发生这种情况时,我都必须使用 lsof -i:8000 查找正在运行的应用程序的进程 ID 并手动终止它。
但这并不是每个人都使用的过程,不是吗?
我想使用像 getTimeMillis() 这样的系统函数,它应该是 kotlin.system 的一部分:https ://kotlinlang.org/api/latest/jvm/stdlib/kotlin.system/index.html
但是编译器说不能导入这样的模块。gradle 配置是这样的(kotlin 多平台项目):
commonMain.dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-common:1.3.10"
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.10.0"
implementation "io.ktor:ktor-client:1.0.0"
implementation "io.ktor:ktor-client-logging:1.1.0"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.1.0"
}
Run Code Online (Sandbox Code Playgroud)
我也找不到任何使用示例或此模块。
ios ×4
java ×3
android ×2
kotlin ×2
apn ×1
certificate ×1
dictionary ×1
eclipse ×1
non-nullable ×1
null ×1
profile ×1
spring-boot ×1
xcode ×1