iOS5 проблемы со старыми приложениями - PullRequest
0 голосов
/ 27 октября 2011

Мне нужен совет, что делать.

У меня есть несколько приложений в магазине приложений, и все они протестированы и полностью функциональны для всех предыдущих iOS.Но теперь, когда я обновляю свое устройство до iOS5, некоторые из них неожиданно начали аварийно завершать работу при отображении предупреждений, которые запрашивают подключение к Интернету и показывают карту с текущим местоположением.

Я не настолько опытен в разработке, поэтому нужен советчто делать?Я предполагал, что в финальной версии iOS5 эти вещи будут исправлены сами по себе или нет.

Спасибо.

ОК. Я порвал зомби и нашел метод, который создает проблемы.

    - (void) alertView: (UIAlertView*) alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{
    NSLog(@" Button PRESSED: %d", buttonIndex);
    [alertView release];



    if (buttonIndex == 1) {
        BOOL noConnectionAvailable = NO;
        BOOL hasParentalLimit = NO;

        switch (lastSelectedItem.itemType) {
            case RestaurantItemTypeAddress : {
                if ([NetworkHelper connectedToNetwork] == YES) {
                    AddressController *mapController = [[AddressController alloc] initWithNibName:@"AddressController" bundle:nil restaurant:restaurant];
                    mapController.title = restaurant.res_title;
                    [self.navigationController pushViewController:mapController animated:YES];
                    [mapController release];
                } else 
                    noConnectionAvailable = YES;

                break;
            }
            case RestaurantItemTypeReservationEmail : {
                if ([NetworkHelper connectedToNetwork] == YES) {
                    MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
                    picker.mailComposeDelegate = self;

                    [picker setSubject:@"Reservation"];
                    // Set up recipients
                    NSArray *toRecipients = [NSArray arrayWithObject:lastSelectedItem.itemTextContent];             
                    [picker setToRecipients:toRecipients];

                    // Fill out the email body text
                    NSString *emailBody = @"";
                    [picker setMessageBody:emailBody isHTML:NO];

                    [self presentModalViewController:picker animated:YES];
                    [picker release];

                    [self.tableView deselectRowAtIndexPath:lastSelectedIndexPath animated:YES];
                } else 
                    noConnectionAvailable = YES;

                break;
            }
            case RestaurantItemTypeReservationForm : {
                if ([NetworkHelper connectedToNetwork] == YES) {
                    if ([NetworkHelper canOpenUrl:lastSelectedItem.itemTextContent]) {
                        WebViewController *wvc = [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:nil urlStr:lastSelectedItem.itemTextContent];
                        wvc.title = restaurant.res_title;
                        [self.navigationController pushViewController:wvc animated:YES];
                        [wvc release];
                    } else hasParentalLimit = YES;
                } else
                    noConnectionAvailable = YES;

                break;
            }
            case RestaurantItemTypeWeb : {
                if ([NetworkHelper connectedToNetwork] == YES) {
                    if ([NetworkHelper canOpenUrl:lastSelectedItem.itemTextContent]) {
                        WebViewController *wvc = [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:nil urlStr:lastSelectedItem.itemText];
                        wvc.title = restaurant.res_title;
                        [self.navigationController pushViewController:wvc animated:YES];
                        [wvc release];
                    } else hasParentalLimit = YES;
                } else
                    noConnectionAvailable = YES;

                break;
            }

        }

        if (noConnectionAvailable == YES) {
            UIAlertView* newAlert = [[UIAlertView alloc] initWithTitle:@"Jesolo Official Guide" 
                                                               message:@"Nessuna connessione disponibile." 
                                                              delegate:self 
                                                     cancelButtonTitle:@"OK"
                                                     otherButtonTitles:nil];
            [newAlert show]; 
        }

        if (hasParentalLimit == YES) {
            UIAlertView* newAlert = [[UIAlertView alloc] initWithTitle:@"Jesolo Official Guide" 
                                                               message:@"Navigazione su Web non consentita." 
                                                              delegate:self 
                                                     cancelButtonTitle:@"OK"
                                                     otherButtonTitles:nil];
            [newAlert show];

        }

    }

    [self.tableView deselectRowAtIndexPath:lastSelectedIndexPath animated:NO];

}

Журнал отличается на iOS4 и iOS5.На iOS5 он сказал:

 2011-11-04 16:26:28.550 Jesolo-EN[5693:207]  Button PRESSED: 1
2011-11-04 16:26:28.776 Jesolo-EN[5693:207] *** -[NSIndexPath isEqual:]: message sent to deallocated instance 0xe6b6fc0
sharedlibrary apply-load-rules all
Current language:  auto; currently objective-c
warning: Attempting to create USE_BLOCK_IN_FRAME variable with block that isn't in the frame.
(gdb) 

, а на iOS4 сказал:

2011-11-04 16:28:08.087 Jesolo-EN[5859:207]  Button PRESSED: 1
2011-11-04 16:28:08.162 Jesolo-EN[5859:207] *** -[UIAlertView release]: message sent to deallocated instance 0x78c4940
sharedlibrary apply-load-rules all
Current language:  auto; currently objective-c
(gdb) 

Я понимаю, что я выпускаю данные, прежде чем использовать их, но когда я запускаю приложение без включенных зомби, оно работает нормальноiOS4 и на iOS5 запускаются один раз, а затем 10 раз аварийно.

Ответы [ 3 ]

0 голосов
/ 27 октября 2011

Я обнаружил, что ссылки на ivars, которые ранее работали, теперь нужно ссылаться как self.ivar. Возможно, ваша ссылка на managedObjectContext вместо этого должна быть self.managedObjectContext?

0 голосов
/ 08 ноября 2011

ОК. Мне удается найти решение.

Каким-то образом iOS5 обнаруживает некоторые выпуски объектов, которых нет в iOS4, и я пытался их найти, но отказался.

Вместо этого я включаю ARC и комментирую все релизы и dealloc, и мое приложение работает очень хорошо.У меня сложилось впечатление, что теперь это работает еще быстрее.Надеюсь, это кому-нибудь поможет ...

0 голосов
/ 27 октября 2011

Я не очень уверен в этом, но вы можете попробовать это также ..

Click on your **project**->go to **info**-> go to **build** section-> in that go to **Deployment** section->then **IOS deployment** section choose the **deployment target to IOS 5** or latest and save and run...

Надеюсь, это может помочь вам ...:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...