2011-11-05 68 views
1

我将我的应用程序转换为ARC并删除了所有构建前发布错误。它启动,但一旦我调用任何方法(所有方法都附加到UIButton),就会崩溃(EXC_BAD_ACCESS)。我还注意到它会询问用户是否允许应用程序使用用户的位置,但在用户回答是或否之前警报将消失。转换为ARC应用程序崩溃的任何方法iPhone

我觉得我有一些非常基本的设置,我错过了这个。

下面是第一个调用的方法,它不会让用户真正说出他们是否允许定位服务。火警然后消失。这有助于任何人的诊断?

-(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

你重构你的代码ARC(编辑 - > Refactor->转换为objecticeÇARC )? – jbat100

+0

UIButtons是作为网点连接起来的吗?如果是这样,你想在你的标头格式'@property(nonatomic,strong)IBOutlet UIButton * myButton;'一切都应该没事 – justin

+0

是的,仍然是炸弹 – Eric

回答

0

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

self.window.rootViewController = nav; 

代替:

[_window addSubview:[nav view]]; 
0

尝试通过使您的委托强大的属性保留您的导航控制器。

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

+0

这只是给我一个白色屏幕 – Eric

+1

@Terry它看起来像_window伊娃至少会保留'nav'的视图,但可能不是导航 – jbrennan

+0

所有我需要改变(到目前为止)是: 自我。 window.rootViewController = nav; 而不是: [_window addSubview:[nav view]]; – Eric