Не могу получить доступ к NString после обратного вызова в [NSURLConnection sendSynchronousRequest] - PullRequest
0 голосов
/ 14 мая 2010

Привет. Я пытаюсь получить cookie-файл с сайта, с которым я могу справиться без проблем. Проблема возникает, когда я пытаюсь сохранить куки-файл в строку NSString в классе-держателе или где-либо еще в этом отношении и пытаюсь получить к нему доступ вне метода делегата, где он был впервые создан.

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
 {
  int i;
  NSString* c;
     NSArray* all = [NSHTTPCookie cookiesWithResponseHeaderFields:[response allHeaderFields] forURL:[NSURL URLWithString:@"http://johncleary.net"]];
  //NSLog(@"RESPONSE HEADERS: \n%@", [response allHeaderFields]);
  for (i=0;i<[all count];i++)
   {
    NSHTTPCookie* cc = [all objectAtIndex: i];
    c = [NSString stringWithFormat: @"%@=%@", [cc name], [cc value]];
    [Cookie setCookie: c];
   NSLog([Cookie cookie]) // Prints the cookie fine.

  }



  [receivedData setLength:0];
 }

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

@interface Cookie : NSObject
{
 NSString* cookie;
}
+ (NSString*) cookie;
+ (void) setCookie: (NSString*) cookieValue;
@end

int main (void)
{
 NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
 JCLogin* login;
 login = [JCLogin new];

 [login DoLogin];
 NSLog([Cookie cookie]); // Crashes the program
 [pool drain];
 return 0;

}

1 Ответ

3 голосов
/ 14 мая 2010

Ваш setCookie: метод retain печенье?

NSString stringWithFormat: возвращает объект автоматического освобождения, поэтому, если вы не сохраните его в своем методе setCookie:, он исчезнет.

...