2011-11-05 50 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