почему этот код дает мне EXC_BAD_ACCESS? - PullRequest
0 голосов
/ 31 января 2012

Я получаю плохой доступ при вызове followLink.Этого не произойдет, если я вставлю строку openURL в textContainsURL, поэтому я предполагаю, что объект больше не существует после завершения метода?Я новичок в этом, но я думаю, что ARC должен был справиться с подобными вещами для вас?

@interface MyViewController : UIViewController
{   
NSURL *newsURL;
}

@end

в реализации есть следующее:

- (void)followLink
{ 
    [[UIApplication sharedApplication]openURL:newsURL];

}

- (BOOL)textContainsURL:(NSString*)text
{
    NSError *error = NULL;
    //scan text to see if there is a link and only set this up if there is
    NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:&error];

    NSArray *matches = [detector matchesInString:text
                                     options:0
                                       range:NSMakeRange(0, [text length])];

    for (NSTextCheckingResult *match in matches) 
    {
        //NSRange matchRange = [match range];
        if ([match resultType] == NSTextCheckingTypeLink) 
        {
            newsURL = [[NSURL alloc] init];
            newsURL = [match URL];//what's the void state? retain it
            return YES;
        }
    }

    return NO;
}

1 Ответ

1 голос
/ 31 января 2012

Вы должны скопировать соответствующий URL-адрес в ваш newsURL ivar или сделать свой newsURL ivar свойством копирования и установить значение с помощью метода доступа.В вашем текущем коде URL автоматически выпущен.

...