Я пытаюсь отобразить изображение с веб-камеры в моем приложении, используя HJCache .
Веб-камера обновляет свое изображение каждые 5 минут.
Я хотел бы иметь кнопку обновления, чтобы пользователи могли щелкнуть ее, чтобы увидеть новое изображение (если доступно).
Мой код пока:
-(void)viewDidLoad {
// init HJObjManager
objMan = [[HJObjManager alloc] initWithLoadingBufferSize:6 memCacheSize:20];
// refresh button
UIBarButtonItem *buttonRefresh = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh
target:self
action:@selector(refreshPhoto:)];
self.navigationItem.rightBarButtonItem = buttonRefresh;
[buttonRefresh release];
NSURL *url = [NSURL URLWithString: @"http://webcamurl"];
img1.url = url;
[self.objMan manage:img1];
}
-(IBAction) refreshPhoto: (id) sender {
// ?
}
Не могли бы вы дать мне подсказку о том, как реализовать refreshPhoto?
Редактировать : Эндер указал мне на emptyCache. Если я правильно понимаю, он должен использоваться HJMOFileCache, поэтому мой код теперь:
-(void)viewDidLoad {
NSString *documentsDirectory;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
documentsDirectory = [paths objectAtIndex:0];
documentsDirectory = [documentsDirectory stringByAppendingPathComponent:@"imageCache/"];
objMan = [[HJObjManager alloc] initWithLoadingBufferSize:6 memCacheSize:20];
HJMOFileCache* fileCache = [[[HJMOFileCache alloc] initWithRootPath:documentsDirectory] autorelease];
fileCache.fileCountLimit = 100;
fileCache.fileAgeLimit = 300; // 5 min
objMan.fileCache = fileCache;
// refresh button
UIBarButtonItem *buttonRefresh = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh
target:self
action:@selector(refreshPhoto:)];
self.navigationItem.rightBarButtonItem = buttonRefresh;
[buttonRefresh release];
NSURL *url = [NSURL URLWithString: @"http://webcamurl"];
img1.url = url;
[self.objMan manage:img1];
[super viewDidLoad];
}
-(IBAction) refreshPhoto: (id) sender {
[self.objMan.fileCache emptyCache];
[self.objMan manage:img1];
}
Это не работает, хотя, когда я нажимаю кнопку обновления, ничего не происходит, изображение не обновляется.
Есть идеи?
Редактировать : Эндер предположил, что, возможно, файлы кэша не удаляются с помощью emptyCache (если я правильно понимаю), но похоже, что они действительно делают.
Из NSLog до и после emptyCache:
2011-09-09 16:57:33.842 Ready dir before emptyCache: (
"http:__www.meteogallipoli.it_cam_cam1.jpg"
)
2011-09-09 16:57:33.845 Loading dir before emptyCache: (
)
2011-09-09 16:57:33.856 Ready dir after emptyCache: (
)
2011-09-09 16:57:33.859 Loading dir after emptyCache: (
)
«Готово» и «Загрузка» - это каталоги, в которых objMan хранит файлы, уже загруженные и загружаемые соответственно.
Может быть, проблема в том, чтобы objMan снова управлял изображением?