Использование NSAlert beginSheetModalForWindow с contextInfo - PullRequest
2 голосов
/ 28 июля 2011

Я получаю следующую ошибку из приведенного ниже кода листа предупреждения, когда пользователь нажимает кнопку по умолчанию:

- [NSRectSet objectForKey:]: нераспознанный селектор, отправленный экземпляру 0x400876300

Кстати, код отлично работает в Snow Leopard, но проблема возникает в Lion.

NSMutableDictionary * extrasDict = [[NSMutableDictionary alloc] init];
[extrasDict setObject:@"http://www.google.com" forKey:@"link"];

NSAlert * alert = [NSAlert alertWithMessageText:@"Published Successfully"
                                  defaultButton:@"View Collage on Facebook"
                                alternateButton:nil
                                    otherButton:@"Cancel"
                      informativeTextWithFormat:@"Successfully published to Facebook."];

[alert beginSheetModalForWindow:myWindow
                  modalDelegate:self
                 didEndSelector:@selector(publishedSuccessfullyDidEnd:returnCode:contextInfo:)
                    contextInfo:extrasDict];             


- (void)publishedSuccessfullyDidEnd:(NSAlert *)alert
                         returnCode:(NSInteger)returnCode
                        contextInfo:(void *)contextInfo {
    if (returnCode == NSAlertDefaultReturn) {
        [[NSWorkspace sharedWorkspace] openURL:
         [NSURL URLWithString:[(NSDictionary*)contextInfo objectForKey:@"link"]]]; 
    }       
}

Ответы [ 2 ]

3 голосов
/ 17 августа 2011

Если вы используете сборку мусора, сохраняйте extrasDict в переменной экземпляра - где угодно, не имеет значения - поэтому она не освобождается в конце цикла выполнения. Вам нужен словарь, пока он не сможет действовать didEndSelector.

0 голосов
/ 30 июля 2011

Я выполнил вашу часть кодирования. Работает хорошо. Проверьте оставшуюся часть кодировки.

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