NSURLConnection использует в своих интересах NSURLCache?

Хотя не непосредственно ответ на вопрос OP, существует довольно сладкий способ узнать, какие переменные находятся в объеме в функции. смотрите на этот код:

>>> def f(x, y):
    z = x**2 + y**2
    sqrt_z = z**.5
    return sqrt_z

>>> f.func_code.co_varnames
('x', 'y', 'z', 'sqrt_z')
>>> 

атрибут func_code имеет все виды интересных вещей в нем. Это позволяет Вам todo некоторый интересный материал. Вот пример того, как я имею, использовали это:

def exec_command(self, cmd, msg, sig):

    def message(msg):
        a = self.link.process(self.link.recieved_message(msg))
        self.exec_command(*a)

    def error(msg):
        self.printer.printInfo(msg)

    def set_usrlist(msg):
        self.client.connected_users = msg

    def chatmessage(msg):
        self.printer.printInfo(msg)

    if not locals().has_key(cmd): return
    cmd = locals()[cmd]

    try:
        if 'sig' in cmd.func_code.co_varnames and \
                       'msg' in cmd.func_code.co_varnames: 
            cmd(msg, sig)
        elif 'msg' in cmd.func_code.co_varnames: 
            cmd(msg)
        else:
            cmd()
    except Exception, e:
        print '\n-----------ERROR-----------'
        print 'error: ', e
        print 'Error proccessing: ', cmd.__name__
        print 'Message: ', msg
        print 'Sig: ', sig
        print '-----------ERROR-----------\n'
11
задан jasoncrawford 17 December 2009 в 00:53
поделиться

2 ответа

It will indeed use NSURLCache automatically, at least in some circumstances. Certainly it does in the following code:

EDIT - works in a OS X 10.6 Cocoa app, not iPhone (misread question)

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {

    // run request with default cache policy
 NSMutableURLRequest *req=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://en.wikipedia.org/"]];
 NSData *data=[NSURLConnection sendSynchronousRequest:req returningResponse:nil error:nil];
 NSLog(@"Received %d bytes", [data length]);

 sleep(10);

    // now run it asking it to use the cache
 [req setCachePolicy:NSURLRequestReturnCacheDataElseLoad];
 data=[NSURLConnection sendSynchronousRequest:req returningResponse:nil error:nil];
 NSLog(@"Received %d bytes", [data length]);

    return 0;
}
0
ответ дан 3 December 2019 в 11:20
поделиться

Пробовали ли вы возиться с методом connection: willCacheResponse: ? Согласно документации системы загрузки URL , «по умолчанию данные для подключения кэшируются в соответствии с поддержкой, предоставляемой подклассом NSURLProtocol, который обрабатывает запрос. Делегат NSURLConnection Delegation может дополнительно уточнить это поведение, реализовав подключение: willCacheResponse:. "

0
ответ дан 3 December 2019 в 11:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: