【发布时间】:2015-06-09 12:55:00
【问题描述】:
我曾有用户报告某个应用程序发生随机崩溃,尤其是在其他应用程序之间切换时。不幸的是,我暂时无法复制崩溃或获取崩溃日志。在我的 iOS 应用程序中,我有一个静态类,用于存储我在整个应用程序中引用的变量 - 我有一种预感,这就是导致问题的原因:
namespace DemoApp.BusinessLogic
{
public static class AppController
{
public static string WebServiceURL { get; set; }
public static int UserId { get; set; }
public static User User { get; set; }
//...
}
}
这些值在用户首次登录应用程序时启动。我的理解是 ARC 永远不会清除静态引用,这是正确的吗?我可以安全地假设这些值在应用程序关闭之前永远不会被清除吗?
我可以将这些静态值替换为对NSUserDefaults 的引用:
namespace DemoApp.BusinessLogic
{
public static class AppController
{
public static string WebServiceURL {
get {
return NSUserDefaults.StandardUserDefaults.StringForKey("WebServiceURL");
}
set {
NSUserDefaults.StandardUserDefaults.SetString(value, "WebServiceURL");
}
}
public static string UserId {
get {
return NSUserDefaults.StandardUserDefaults.StringForKey("UserId");
}
set {
NSUserDefaults.StandardUserDefaults.SetString(value, "UserId");
}
}
//...
}
}
这是一种更好的做事方式吗?
【问题讨论】:
标签: ios xamarin crash garbage-collection automatic-ref-counting