2015-12-03 2 views
0

Я desperating,
У меня есть приложение IOS, которая работает хорошо на IPAD, IPAD 2 и даже на IPAD Air Simulator , но, пытаясь запустить этот APP на AIRAD-устройстве IPAD, приложение вылетает, выполняя запрос HTTPS и получая некоторые данные. для запроса HTTPS Я использую структуру AFNetworking. Есть ли у кого-нибудь идея или какой-то опыт с симулятивными проблемами? Я уже много читал статьи о stackoverflow и пытался найти зомби, но ничего не нашел.

переключатель для IPAD IPAD AIR Error Тема 1: EXC_BAD_ACCESS (код = 1, адрес = 0x384e344432212301)

- (void) executeRequestType:(RequestType)type_ 
       requestMethod:(RequestMethod)method_ 
        layout:(NSString *)layout_ 
        action:(NSString *)action_ 
       parameters:(NSDictionary *)params_ 
       successBlock:(SuccessBlock)success_ { 

    _status = RequestStatusInitate; 

    //NSLog(@"%@ - %@ - %@", layout_, params_, action_); 
    NSString *parmstr = @""; 
    if (params_) { 
     parmstr = [self parmeterStringFromDictionary:params_]; 
    } 
    NSString *strURL = [NSString stringWithFormat:@"%@fmi/xml/fmresultset.xml?-db=%@&-lay=%@%@&%@",SERVER_URL,DB_NAME, layout_, parmstr, action_]; 
    NSLog(@"request str %@", strURL); 

    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; 

    NSURL *url = [NSURL URLWithString:strURL]; 
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 

    if (method_ == RequestMethodDelete) { 
     [request setHTTPMethod:@"DELETE"]; 
    } 

    AFXMLRequestOperation *operation = [AFXMLRequestOperation 
             XMLParserRequestOperationWithRequest:request 
             success:^(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser) { 

              NSLog(@"%li",(long)response.statusCode); 

              NSObject *object = success_(XMLParser); 
              NSString *requestType = [NSString stringWithFormat:@"%d", type_]; 
              NSDictionary *responseDict; 
              responseDict = @{ DATA: object, 
                 REQUEST_TYPE: requestType}; 
              _status = RequestStatusCompleted; 
              [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; 
              objc_msgSend(_delegate, @selector(callerDidFinishLoading:receivedObject:), self, responseDict); 
     //Trying to call "callerDidFinishLoading" EXC_BAD_ACCESS is Thrown 
    } 
             failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, NSXMLParser *XMLParser) { 

              _status = RequestStatusCompleted; 
              NSLog(@"%@",error); 
              objc_msgSend(_delegate, @selector(caller:didFailWithError:), self, error); 
              [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; 

                          }]; 

    [operation start]; 


    _status = RequestStatusInProgress; 

} 
+0

Компилятор должен быть предупреждение о том, что голое использование objc_msgSend(). – bbum

+0

Я новичок в этом проекте и там много предупреждений. Не удается найти время, чтобы исправить каждый Предупреждение:/ – feldeOne

+0

Ошибка завышенной стоимости. :) Со временем я гарантирую, что вы будете тратить больше времени, пытаясь пробраться через предупреждения, чтобы найти новые со значением против времени, потраченного на их исправление. Однако я полностью сочувствую вашей позиции по этому вопросу. – bbum

ответ

2

Почему вы используете objc_msgSend вызвать метод делегата?

Вам нужно изменить:

objc_msgSend(_delegate, @selector(callerDidFinishLoading:receivedObject:), self, responseDict); 

к:

[_delegate callerDidFinishLoading:self receivedObject:responseDict]; 

Если это метод вариант делегата затем сделать:

if ([_delegate respondsToSelector:@selector(callerDidFinishLoading:receivedObject:)]) { 
    [_delegate callerDidFinishLoading:self receivedObject:responseDict]; 
} 
+0

Большое спасибо за решение моей проблемы, но я до сих пор не вижу большой разницы. И я не могу понять, почему он хорошо работает на старых IPad 1 + 2, но разбился на IPad AIR? – feldeOne

+0

Нашли ответ здесь: http://stackoverflow.com/questions/17263354/why-shouldnt-you-use-objc-msgsend-in-objective-c – feldeOne