Приложение загружается на iphone4, но не на строковый параметр 3g..nil - PullRequest
0 голосов
/ 31 августа 2010

Пожалуйста, помогите .. Я не могу понять эту странную проблему.Мое приложение имеет поддержку iAds и многозадачности.Приложение может быть развернуто на iphone, и оно работает довольно хорошо, но когда я попытался развернуть свое приложение на iphone 3g (с iOS 3.1.2), оно выдает следующую ошибку на консоли.Я пытался закомментировать код для iAds, но не уверен, что здесь происходит .. Пожалуйста, помогите, ребята .. спасибо

[Session started at 2010-08-31 13:01:05 -0500.]
GNU gdb 6.3.50-20050815 (Apple version gdb-1470) (Thu May 27 05:54:06 UTC 2010)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "--host=i386-apple-darwin --target=arm-apple-darwin".tty /dev/ttys003
Loading program into debugger…
warning: Unable to read symbols from "iAd" (not yet mapped into memory).
Program loaded.
target remote-mobile /tmp/.XcodeGDBRemote-32678-64
Switching to remote-macosx protocol
mem 0x1000 0x3fffffff cache
mem 0x40000000 0xffffffff none
mem 0x00000000 0x0fff none
run
Running…
[Switching to thread 11779]
[Switching to thread 11779]
sharedlibrary apply-load-rules all
continue
2010-08-31 13:02:14.666 SugarCRMReleaseOne[5256:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL initWithString:relativeToURL:]: nil string parameter'
2010-08-31 13:02:14.709 SugarCRMReleaseOne[5256:207] Stack: (
    853417245,
    845594132,
    852966195,
    852966099,
    871903965,
    871903579,
    871903537,
    211149,
    211529,
    147487,
    171893,
    290105,
    279933,
    853174415,
    818198404,
    818198252,
    818198196,
    818197260,
    818200460,
    818194688,
    818192276,
    818173840,
    818172052,
    834382224,
    853165355,
    853163039,
    834376564,
    817839152,
    817832496,
    8857,
    8720
)
terminate called after throwing an instance of 'NSException'
Program received signal:  “SIGABRT”.
kill
quit

EDIT

1 [syncDelegateImpl loginHandler];

2 - (void) loginHandler {SCRMsugarsoap * service = [[SCRMsugarsoap alloc] initWithUrl: serverURL];service.logging = YES;service.username = userName;service.password = пароль;[service login: self action: @selector (sessionIdHandler :) user_auth: [[[SCRMuser_auth alloc] initWithUsername: userName andPassword: пароль] autorelease] application_name: @ ""];[сервисный релиз];}

3 Когда он встречает [service login: self action: @selector (sessionIdHandler :) user_auth: [[[SCRMuser_auth alloc] initWithUsername: userName andPassword: пароль] autorelease] application_name: @ ""];

  • (id) initWithUsername: (NSString *) имя пользователя и пароль: (NSString *) pass {if (self = [super init]) {Soap * converter = [[Soap alloc] init];SCRMsugarsoap * service = [[SCRMsugarsoap alloc] init];

        [service get_server_version:self action:@selector(get_server_versionHandler:)];
    
        self.user_name = username;
        self.password = [converter tomd5:pass];
    
        [converter release];
        [service release];
    }
    return self;
    

    }

4 Теперь, когда он сталкивается с [service get_server_version: self action: @selector (get_server_versionHandler):)];в приведенном выше методе ..

  • (SoapRequest *) get_server_version: (id) _target action: (SEL) _action {NSMutableArray * _params = [NSMutableArray array];

    NSString* _envelope = [Soap createEnvelope: @"get_server_version" forNamespace: self.namespace withParameters: _params withHeaders: self.headers];
    SoapRequest* _request = [SoapRequest create: _target action: _action service: self soapAction: (@"%@/get_server_version", serverURL) postData: _envelope deserializeTo: @"NSString"];
    [_request send];
    return _request;
    

    }

    5 Теперь он пытается вызвать метод класса SOAP Request

    • (SoapRequest *). Обработчик действия: (SoapHandler *): Служба действия (SEL): (SoapService*) service soapAction: (NSString *) soapAction postData: (NSString *) postData deserializeTo: (id) deserializeTo {SoapRequest * request = [SoapRequest create: действие обработчика: действие urlString: service.serviceUrl soapAction: soapAction postData: postTose desese desese];request.defaultHandler = service.defaultHandler;request.logging = service.logging;request.username = service.username;request.password = service.password;запрос на возврат;}

6 Поэтому, когда он пытается установить запрос, нижеприведенный метод вызывается

+ (SoapRequest*) create: (SoapHandler*) handler action: (SEL) action urlString: (NSString*) urlString soapAction: (NSString*) soapAction postData: (NSString*) postData deserializeTo: (id) deserializeTo {
    SoapRequest* request = [[SoapRequest alloc] init];
    //request.url = nil;
    //if(urlString!=nil)
    //{
    request.url=[NSURL URLWithString: urlString];
    //}
    request.soapAction = soapAction;
    request.postData = [postData retain];
    request.handler = handler;
    request.deserializeTo = deserializeTo;
    request.action = action;
    request.defaultHandler = nil;
    return [request autorelease];
}

при установке URL, он выдает objc_exception_throw..It работаетнормально на iphone 4, но когда я пытаюсь развернуть на iphone 3, он выдает ошибки ..

У меня в приложении есть многозадачные среды и платформы iAd, и я проверил версии следующим образом:

if ([[UIDevice currentDevice].systemVersion floatValue] >=3.2)
{
do iphone 4 stuff
}
else
{
do iphone 3 stuff
}

1 Ответ

0 голосов
/ 31 августа 2010

Ваша проблема прямо в отчете: вы передаете ноль в initWithString:, что вызывает исключение.Либо проверьте nil перед вызовом инициализатора, либо убедитесь, что строковое значение является другим способом решения проблемы.

Редактирование: я бы рекомендовал упростить инициализатор класса, но это не ваша проблема.Если urlString сформирован неправильно, URL вернет ноль.Согласно документации Apple: Строка, с которой нужно инициализировать объект NSURL.Должен соответствовать RFC 2396. Этот метод анализирует URLString в соответствии с RFC 1738 и 1808.

Это может быть вашей проблемой, хотя я не знаю, достаточно ли вы написали достаточно кода для уверенности.

...