2012-01-02 1 views
1

Я использую библиотеку AsiHttpRequest для создания ссылок на url в своих приложениях. Тем не менее, обновление до iOS5 и Reachability.m файл сообщает некоторые ошибки (4) на следующие функции:asiHttpRequest под iOS5

static void ReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void* info) { 

    #pragma unused (target, flags) 
    NSCAssert(info, @"info was NULL in ReachabilityCallback"); 
    NSCAssert([(NSObject*) info isKindOfClass: [Reachability class]], @"info was the wrong class in ReachabilityCallback"); 


    // Post a notification to notify the client that the network reachability changed. 
    [[NSNotificationCenter defaultCenter] postNotificationName: kReachabilityChangedNotification object: (Reachability *) info]; 


} // ReachabilityCallback() 


- (BOOL) startNotifier { 

    SCNetworkReachabilityContext context = {0, self, NULL, NULL, NULL}; 

    if(SCNetworkReachabilitySetCallback(reachabilityRef, ReachabilityCallback, &context)) { 

     if(SCNetworkReachabilityScheduleWithRunLoop(reachabilityRef, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode)) { 

      return YES; 

     } 

    } 

    return NO; 

} // startNotifier 

1SR ошибка: в NSCAssert линии «Литой из C указательного типа„пустота“в Objective-C указатель тип NSObject требует мостового литья ". Почему бывает и как его решить?

ANSWER: вы можете отключить ARC для каждого файла. Перейдите к настройкам сборки вашего проекта и установите флаг -fno-objc-arc во всех файлах ASIHTTPRequest (дважды щелкните, чтобы отредактировать текст). Затем вы должны удалить ASIAuthenticationDialog и любые ссылки на него, которые все еще порождают ошибки. Меня устраивает.

+0

мой ответ сфокусирован, чтобы помочь людям с подобной проблемой. Если вы проголосуете -1, по крайней мере, объясните, почему. Спасибо – Jaume

ответ

2

EDIT: Я помню сейчас и да, проблема в ARC. Но вы можете исключить файлы из подчиненных в ARC, установив следующий флаг компилятора в фазах построения >> Скомпилировать источники: -fno-objc-arc. Если вы выберете все файлы ASIHTTPRequest и дважды щелкните, вы можете установить флаг для всех из них одним махом.

ОРИГИНАЛЬНЫЙ ПОСТ:

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

Во всяком случае, это то, что эти строки в моем Reachability.m выглядеть следующим образом:

//Start listening for reachability notifications on the current run loop 
static void ReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void* info) { 

#pragma unused (target, flags) 
NSCAssert(info, @"info was NULL in ReachabilityCallback"); 
NSCAssert([(NSObject*) info isKindOfClass: [Reachability class]], @"info was the wrong class in ReachabilityCallback"); 

//We're on the main RunLoop, so an NSAutoreleasePool is not necessary, but is added defensively 
// in case someone uses the Reachablity object in a different thread. 
NSAutoreleasePool* pool = [NSAutoreleasePool new]; 

// Post a notification to notify the client that the network reachability changed. 
[[NSNotificationCenter defaultCenter] postNotificationName: kReachabilityChangedNotification 
                object: (Reachability *) info]; 

[pool release]; 

} // ReachabilityCallback() 


- (BOOL) startNotifier { 

    SCNetworkReachabilityContext context = {0, self, NULL, NULL, NULL}; 

    if(SCNetworkReachabilitySetCallback(reachabilityRef, ReachabilityCallback, &context)) { 

     if(SCNetworkReachabilityScheduleWithRunLoop(reachabilityRef, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode)) { 

      return YES; 

     } 

    } 

    return NO; 

} // startNotifier 
+0

тот же код, что и я, работает, но не с iOS5. Проблема возникла из-за ARC. – Jaume