我将我的应用转换为ARC并删除了所有预构建版本错误。它启动,但一旦我调用任何方法(所有这些都连接到UIButtons)就会崩溃(EXC_BAD_ACCESS)。我还注意到它将询问用户是否允许该应用程序使用该用户的位置,但是在用户可以回答是或否之前警报将消失。
我觉得我有一些非常基本的设置导致这种情况。
这是第一个被调用的方法,它不会让用户真正说出他们是否允许位置服务。然后警报会消失。这有助于任何人的诊断吗?
-(void)startLocation
{
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
}
另外,这是我的didFinishLaunchingWithOptions方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
UINavigationController *nav = [[UINavigationController alloc] init];
StartPageViewController *start = [[StartPageViewController alloc]init];
NSManagedObjectContext *context = [self managedObjectContext];
if (!context)
{
// Handle the error.
}
start.managedObjectContext = context;
nav.viewControllers = [NSArray arrayWithObjects:start, nil];
[_window addSubview:[nav view]];
[self.window makeKeyAndVisible];
return YES;
}
答案 0 :(得分:0)
尝试保留导航控制器,使其成为代理人的强大属性。
目前,我没有看到任何会导致ARC在方法结束时不释放nav
的代码。这将释放start
,这将释放context
。
答案 1 :(得分:0)
所有我需要改变的(到目前为止)是:
self.window.rootViewController = nav;
而不是:
[_window addSubview:[nav view]];