NSURLConnection help - PullRequest
       16

NSURLConnection help

0 голосов
/ 22 марта 2011

Также я знаю, что все, что я создаю с использованием alloc, я должен освобождать, но когда я пытаюсь освободить объект 'request', используя [request release]; выдает следующую ошибку:

Program received signal:  “EXC_BAD_ACCESS”.
kill
error while killing target (killing anyway): warning: error on line 2179 of "/SourceCache/gdb/gdb-1510/src/gdb/macosx/macosx-nat-inferior.c" in function "macosx_kill_inferior_safe": (os/kern) failure (0x5x)

Ответы [ 2 ]

2 голосов
/ 22 марта 2011

Вы создаете запрос, используя requestWithURL:cachePolicy:timeoutInterval:. Поскольку имя этого метода не начинается с «alloc» или «new» или содержит «copy», в соответствии с Правилами управления памятью вы не владеете им и не должны его выпускать (если только вы вызовите, сохраните это явно, конечно).

Что касается эффективности, код выглядит нормально. Обратите внимание, что если пользователь может запустить вторую загрузку до завершения первой, у вас будут проблемы; решение этой проблемы состоит в том, чтобы либо предотвратить такую ​​вещь, либо сохранить объект NSURLConnection, созданный в load, в ivar, а затем с помощью методов псевдо-делегата проверить это на предмет переданного соединения, прежде чем делать что-либо еще. Также хорошей идеей будет установить значение ivar равным nil, когда вы отпустите объект, который он ранее содержал, так как тогда вы не сможете случайно использовать выпущенный объект. И я отмечаю, что имя переменной для вашего предупреждения «сбой аутентификации» - alertsuccess, это вводит в заблуждение;)

0 голосов
/ 22 марта 2011

Попробуйте это в своей функции загрузки:

    NSMutableURLRequest *request;

request=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:pageUrl]];

NSURLResponse *response;
NSError *error = [[NSError alloc] init];
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];`

NSString * responseString = [NSString stringWithCString: [байты данных] длина: [длина данных]];`

...