2013-02-24 12 views
5

Bir Twitter hesabına erişmek için kod yazıyorum, ancak hesapta hiçbir hesap bulunmadığı durumda sorun yaşıyorum. Yapmak istediklerim, kullanıcıya Twitter ile kimlik doğrulaması yapabilmek için öncelikle hesabını kendi ayarlarında oluşturmaları gerektiğini bildiren bir uyarı görüntülüyor. Görünüşe göre hata ACAccountStoreReply dizisindeki gerçekleşiyor, yaklaşık 25 çağrıları [uyarı gösterisi] denir derin sonra, bir de Xcode debugger ile uzman değilim amaUIAlertView, tamamlama eylemcisi engellemesinde çalışmıyor

self.accountStore = [[ACAccountStore alloc] init]; 
ACAccountType *accountTypeTwitter = [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter]; 

[self.accountStore requestAccessToAccountsWithType:accountTypeTwitter options:nil completion:^(BOOL granted, NSError *error) { 
    if(granted) { 
     //Doesn't matter for the present case 
    } else if (error){ 

     [SVProgressHUD dismiss]; //not directly relevant to the present question, but it also doesn't work within the block, so I'm leaving it as a clue 

     switch ([error code]){ 
      case (6): 

       UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"No Twitter Account Detected" message:@"Please go into your device's settings menu to add your Twitter account." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
       [alert show]; //triggers an error 
       break; 

     } 
    } 
}]; 

: Burada

kod bu ucol_getVersion adlı işlem. Hata ayıklayıcı EXC_BAD_ACCESS (kod = 2, adres = 0xcc) belirtir.

Yığın Taşımı'nda ve Internet'te, bloklarda çalışmayan UIAlertViews ile ilgili çözümler için ve ayrıca uyarıları gösteren genel sorunlar (delege için farklı değerler denedim) ve genel sorunlar için arama yaptım. requestAccessToHesaplarWithType çağrıları.

Ayrıca, çeşitli çevrimiçi kaynakları okuyarak ve Objecting-C, 4. ekte Programlama'nın ilgili sayfalarını okuyarak bloklar konusundaki bilgilerimi geliştirmeyi denedim.

Herhangi bir yardım için teşekkür ederiz.

cevap

21

Ana arabirim üzerinde herhangi bir UI etkileşiminin yapıldığından daima emin olun. Bir dispatch_async içinde UIAlertView çağrıyı sarın:

dispatch_async(dispatch_get_main_queue(), ^{ 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No Twitter Account Detected" message:@"Please go into your device's settings menu to add your Twitter account." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [alert show]; 
}); 

Ayrıca aramanın sonunda iki nil s vardı.

+0

kesinlikle doğru .. bravo ... +1 –

+0

Bu uyarı görünümünün temsilci yöntemini çağırmak istersem. ?? –

İlgili konular