Поскольку одно значение не инициализируется до выполнения операции, и поэтому я думаю, что поведение не определено, значением может быть что угодно.
Две вещи. Во-первых, вы должны использовать асинхронные методы, а не синхронный метод / класс.
NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:req]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:30.0];
// create the connection with the request
// and start loading the data
NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
Аутентификация управляется путем реализации этого метода в вашем делегате:
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge;
И вам, вероятно, также потребуется реализовать эти методы:
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;
- (void)connectionDidFinishLoading:(NSURLConnection *)connection;
Использование асинхронного метода в любом случае дает лучший пользовательский опыт, поэтому, несмотря на дополнительную сложность, его стоит использовать даже без возможности аутентификации.