在任何iPhone方法上转换为ARC App崩溃

时间:2011-11-05 15:34:05

标签: iphone memory automatic-ref-counting

我将我的应用转换为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;

}

2 个答案:

答案 0 :(得分:0)

尝试保留导航控制器,使其成为代理人的强大属性。

目前,我没有看到任何会导致ARC在方法结束时不释放nav的代码。这将释放start,这将释放context

答案 1 :(得分:0)

所有我需要改变的(到目前为止)是:

 self.window.rootViewController = nav;

而不是:

[_window addSubview:[nav view]];