From 1a83735dad032e576694841cfe2af8e725c869af Mon Sep 17 00:00:00 2001 From: Mark Johnson Date: Sun, 16 Jan 2011 10:11:08 -0800 Subject: [PATCH] Added some comments. A little clean up. --- .gitignore | 2 + DemoClasses/Flickr/FlickrSearcgTVC.h | 16 - DemoClasses/Flickr/FlickrSearcgTVC.m | 157 --- DemoClasses/Flickr/FlickrSearcgTVC.xib | 471 ------- DemoClasses/Flickr/FlickrSearch.h | 0 DemoClasses/Flickr/FlickrSearch.m | 0 DemoClasses/Flickr/FlickrSearchRes.h | 0 DemoClasses/Flickr/FlickrSearchRes.m | 0 DemoClasses/Flickr/FlickrSearchTVC.h | 0 DemoClasses/Flickr/FlickrSearchTVC.m | 0 DemoClasses/Flickr/FlickrSearchTVC.xib | 0 DemoClasses/HJCacheAppDelegate.h | 0 DemoClasses/HJCacheAppDelegate.m | 0 DemoClasses/ImageTable/Content.h | 0 DemoClasses/ImageTable/Content.m | 0 DemoClasses/ImageTable/ImgCell.h | 0 DemoClasses/ImageTable/ImgCell.m | 0 DemoClasses/ImageTable/ImgCell.xib | 0 DemoClasses/ImageTable/ImgTVC.h | 0 DemoClasses/ImageTable/ImgTVC.m | 0 DemoClasses/ImageTable/ImgTVC.xib | 0 DemoClasses/RootViewController.h | 0 DemoClasses/RootViewController.m | 0 HJCache-Info.plist | 0 HJCache.xcodeproj/markj.pbxuser | 205 --- HJCache.xcodeproj/markj.perspectivev3 | 1490 ---------------------- HJCache.xcodeproj/project.pbxproj | 10 - HJCacheClasses/HJCircularBuffer.h | 13 +- HJCacheClasses/HJCircularBuffer.m | 2 +- HJCacheClasses/HJMOBigFileCache.h | 9 +- HJCacheClasses/HJMOBigFileCache.m | 3 +- HJCacheClasses/HJMOFileCache.h | 6 +- HJCacheClasses/HJMOFileCache.m | 2 +- HJCacheClasses/HJMOHandler.h | 8 +- HJCacheClasses/HJMOHandler.m | 2 +- HJCacheClasses/HJMOPolicy.h | 30 +- HJCacheClasses/HJMOPolicy.m | 23 +- HJCacheClasses/HJMOUser.h | 47 +- HJCacheClasses/HJMOUserBase.h | 6 +- HJCacheClasses/HJMOUserBase.m | 2 +- HJCacheClasses/HJManagedImageV.h | 12 +- HJCacheClasses/HJManagedImageV.m | 2 +- HJCacheClasses/HJManagedImageVDelegate.h | 2 +- HJCacheClasses/HJObjManager.h | 51 +- HJCacheClasses/HJObjManager.m | 10 +- HJCacheClasses/HJWeakMutableArray.h | 6 +- HJCacheClasses/HJWeakMutableArray.m | 2 +- HJCache_Prefix.pch | 0 Images/0.png | Bin Images/1.png | Bin Images/1.psd | Bin Images/2.png | Bin Images/3.png | Bin Images/4.png | Bin Images/5.png | Bin LICENSE | 0 MainWindow.xib | 0 README | 3 + RootViewController.xib | 0 main.m | 0 60 files changed, 197 insertions(+), 2395 deletions(-) create mode 100644 .gitignore delete mode 100644 DemoClasses/Flickr/FlickrSearcgTVC.h delete mode 100644 DemoClasses/Flickr/FlickrSearcgTVC.m delete mode 100644 DemoClasses/Flickr/FlickrSearcgTVC.xib mode change 100644 => 100755 DemoClasses/Flickr/FlickrSearch.h mode change 100644 => 100755 DemoClasses/Flickr/FlickrSearch.m mode change 100644 => 100755 DemoClasses/Flickr/FlickrSearchRes.h mode change 100644 => 100755 DemoClasses/Flickr/FlickrSearchRes.m mode change 100644 => 100755 DemoClasses/Flickr/FlickrSearchTVC.h mode change 100644 => 100755 DemoClasses/Flickr/FlickrSearchTVC.m mode change 100644 => 100755 DemoClasses/Flickr/FlickrSearchTVC.xib mode change 100644 => 100755 DemoClasses/HJCacheAppDelegate.h mode change 100644 => 100755 DemoClasses/HJCacheAppDelegate.m mode change 100644 => 100755 DemoClasses/ImageTable/Content.h mode change 100644 => 100755 DemoClasses/ImageTable/Content.m mode change 100644 => 100755 DemoClasses/ImageTable/ImgCell.h mode change 100644 => 100755 DemoClasses/ImageTable/ImgCell.m mode change 100644 => 100755 DemoClasses/ImageTable/ImgCell.xib mode change 100644 => 100755 DemoClasses/ImageTable/ImgTVC.h mode change 100644 => 100755 DemoClasses/ImageTable/ImgTVC.m mode change 100644 => 100755 DemoClasses/ImageTable/ImgTVC.xib mode change 100644 => 100755 DemoClasses/RootViewController.h mode change 100644 => 100755 DemoClasses/RootViewController.m mode change 100644 => 100755 HJCache-Info.plist delete mode 100644 HJCache.xcodeproj/markj.pbxuser delete mode 100644 HJCache.xcodeproj/markj.perspectivev3 mode change 100644 => 100755 HJCacheClasses/HJCircularBuffer.h mode change 100644 => 100755 HJCacheClasses/HJCircularBuffer.m mode change 100644 => 100755 HJCacheClasses/HJMOBigFileCache.h mode change 100644 => 100755 HJCacheClasses/HJMOBigFileCache.m mode change 100644 => 100755 HJCacheClasses/HJMOFileCache.h mode change 100644 => 100755 HJCacheClasses/HJMOFileCache.m mode change 100644 => 100755 HJCacheClasses/HJMOHandler.h mode change 100644 => 100755 HJCacheClasses/HJMOHandler.m mode change 100644 => 100755 HJCacheClasses/HJMOPolicy.h mode change 100644 => 100755 HJCacheClasses/HJMOPolicy.m mode change 100644 => 100755 HJCacheClasses/HJMOUser.h mode change 100644 => 100755 HJCacheClasses/HJMOUserBase.h mode change 100644 => 100755 HJCacheClasses/HJMOUserBase.m mode change 100644 => 100755 HJCacheClasses/HJManagedImageV.h mode change 100644 => 100755 HJCacheClasses/HJManagedImageV.m mode change 100644 => 100755 HJCacheClasses/HJManagedImageVDelegate.h mode change 100644 => 100755 HJCacheClasses/HJObjManager.h mode change 100644 => 100755 HJCacheClasses/HJObjManager.m mode change 100644 => 100755 HJCacheClasses/HJWeakMutableArray.h mode change 100644 => 100755 HJCacheClasses/HJWeakMutableArray.m mode change 100644 => 100755 HJCache_Prefix.pch mode change 100644 => 100755 Images/0.png mode change 100644 => 100755 Images/1.png mode change 100644 => 100755 Images/1.psd mode change 100644 => 100755 Images/2.png mode change 100644 => 100755 Images/3.png mode change 100644 => 100755 Images/4.png mode change 100644 => 100755 Images/5.png mode change 100644 => 100755 LICENSE mode change 100644 => 100755 MainWindow.xib mode change 100644 => 100755 README mode change 100644 => 100755 RootViewController.xib mode change 100644 => 100755 main.m diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..55c5388 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/.DS_Store +/build/ \ No newline at end of file diff --git a/DemoClasses/Flickr/FlickrSearcgTVC.h b/DemoClasses/Flickr/FlickrSearcgTVC.h deleted file mode 100644 index 8614d6c..0000000 --- a/DemoClasses/Flickr/FlickrSearcgTVC.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// FlickrSearcgTVC.h -// hjlib -// -// Created by markj on 1/5/10. -// Copyright 2010 Mark Johnson. All rights reserved. -// - -#import - - -@interface FlickrSearcgTVC : UITableViewController { - -} - -@end diff --git a/DemoClasses/Flickr/FlickrSearcgTVC.m b/DemoClasses/Flickr/FlickrSearcgTVC.m deleted file mode 100644 index 01b00f4..0000000 --- a/DemoClasses/Flickr/FlickrSearcgTVC.m +++ /dev/null @@ -1,157 +0,0 @@ -// -// FlickrSearcgTVC.m -// hjlib -// -// Created by markj on 1/5/10. -// Copyright 2010 Mark Johnson. All rights reserved. -// - -#import "FlickrSearcgTVC.h" - - -@implementation FlickrSearcgTVC - -/* -- (id)initWithStyle:(UITableViewStyle)style { - // Override initWithStyle: if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. - if (self = [super initWithStyle:style]) { - } - return self; -} -*/ - -/* -- (void)viewDidLoad { - [super viewDidLoad]; - - // Uncomment the following line to display an Edit button in the navigation bar for this view controller. - // self.navigationItem.rightBarButtonItem = self.editButtonItem; -} -*/ - -/* -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; -} -*/ -/* -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; -} -*/ -/* -- (void)viewWillDisappear:(BOOL)animated { - [super viewWillDisappear:animated]; -} -*/ -/* -- (void)viewDidDisappear:(BOOL)animated { - [super viewDidDisappear:animated]; -} -*/ - -/* -// Override to allow orientations other than the default portrait orientation. -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - // Return YES for supported orientations - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} -*/ - -- (void)didReceiveMemoryWarning { - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. -} - -- (void)viewDidUnload { - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - - -#pragma mark Table view methods - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return 1; -} - - -// Customize the number of rows in the table view. -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return 0; -} - - -// Customize the appearance of table view cells. -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - - static NSString *CellIdentifier = @"Cell"; - - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; - if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; - } - - // Set up the cell... - - return cell; -} - - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - // Navigation logic may go here. Create and push another view controller. - // AnotherViewController *anotherViewController = [[AnotherViewController alloc] initWithNibName:@"AnotherView" bundle:nil]; - // [self.navigationController pushViewController:anotherViewController]; - // [anotherViewController release]; -} - - -/* -// Override to support conditional editing of the table view. -- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { - // Return NO if you do not want the specified item to be editable. - return YES; -} -*/ - - -/* -// Override to support editing the table view. -- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { - - if (editingStyle == UITableViewCellEditingStyleDelete) { - // Delete the row from the data source - [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES]; - } - else if (editingStyle == UITableViewCellEditingStyleInsert) { - // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view - } -} -*/ - - -/* -// Override to support rearranging the table view. -- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { -} -*/ - - -/* -// Override to support conditional rearranging of the table view. -- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { - // Return NO if you do not want the item to be re-orderable. - return YES; -} -*/ - - -- (void)dealloc { - [super dealloc]; -} - - -@end - diff --git a/DemoClasses/Flickr/FlickrSearcgTVC.xib b/DemoClasses/Flickr/FlickrSearcgTVC.xib deleted file mode 100644 index ae61189..0000000 --- a/DemoClasses/Flickr/FlickrSearcgTVC.xib +++ /dev/null @@ -1,471 +0,0 @@ - - - - 784 - 10C540 - 740 - 1038.25 - 458.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 62 - - - YES - - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - YES - - - - YES - - IBFilesOwner - - - IBFirstResponder - - - - 292 - - YES - - - 290 - {320, 44} - - NO - 3 - YES - - - - {320, 416} - - - 3 - MQA - - NO - YES - NO - - - NO - - NO - 1 - 0 - YES - 44 - 22 - 22 - - - - - - - YES - - - view - - - - 5 - - - - dataSource - - - - 6 - - - - delegate - - - - 7 - - - - searchBar - - - - 10 - - - - searchDisplayController - - - - 11 - - - - searchContentsController - - - - 12 - - - - searchResultsDataSource - - - - 13 - - - - searchResultsDelegate - - - - 14 - - - - delegate - - - - 15 - - - - delegate - - - - 16 - - - - - YES - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - YES - - - - - - 8 - - - - - 9 - - - - - - - YES - - YES - -1.CustomClassName - -2.CustomClassName - 4.IBEditorWindowLastContentRect - 4.IBPluginDependency - 8.IBPluginDependency - - - YES - FlickrSearcgTVC - UIResponder - {{692, 217}, {320, 480}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - YES - - - - - YES - - - YES - - - - 16 - - - - YES - - FlickrSearcgTVC - UITableViewController - - IBProjectSource - Classes/FlickrSearcgTVC.h - - - - - YES - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSNetServices.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSPort.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSStream.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSXMLParser.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIAccessibility.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UINibLoading.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIResponder.h - - - - UIResponder - NSObject - - - - UIScrollView - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIScrollView.h - - - - UISearchBar - UIView - - IBFrameworkSource - UIKit.framework/Headers/UISearchBar.h - - - - UISearchDisplayController - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UISearchDisplayController.h - - - - UITableView - UIScrollView - - IBFrameworkSource - UIKit.framework/Headers/UITableView.h - - - - UITableViewController - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UITableViewController.h - - - - UIView - - IBFrameworkSource - UIKit.framework/Headers/UITextField.h - - - - UIView - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIView.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UINavigationController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UITabBarController.h - - - - UIViewController - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIViewController.h - - - - - 0 - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - ../hjlib.xcodeproj - 3 - 3.1 - - diff --git a/DemoClasses/Flickr/FlickrSearch.h b/DemoClasses/Flickr/FlickrSearch.h old mode 100644 new mode 100755 diff --git a/DemoClasses/Flickr/FlickrSearch.m b/DemoClasses/Flickr/FlickrSearch.m old mode 100644 new mode 100755 diff --git a/DemoClasses/Flickr/FlickrSearchRes.h b/DemoClasses/Flickr/FlickrSearchRes.h old mode 100644 new mode 100755 diff --git a/DemoClasses/Flickr/FlickrSearchRes.m b/DemoClasses/Flickr/FlickrSearchRes.m old mode 100644 new mode 100755 diff --git a/DemoClasses/Flickr/FlickrSearchTVC.h b/DemoClasses/Flickr/FlickrSearchTVC.h old mode 100644 new mode 100755 diff --git a/DemoClasses/Flickr/FlickrSearchTVC.m b/DemoClasses/Flickr/FlickrSearchTVC.m old mode 100644 new mode 100755 diff --git a/DemoClasses/Flickr/FlickrSearchTVC.xib b/DemoClasses/Flickr/FlickrSearchTVC.xib old mode 100644 new mode 100755 diff --git a/DemoClasses/HJCacheAppDelegate.h b/DemoClasses/HJCacheAppDelegate.h old mode 100644 new mode 100755 diff --git a/DemoClasses/HJCacheAppDelegate.m b/DemoClasses/HJCacheAppDelegate.m old mode 100644 new mode 100755 diff --git a/DemoClasses/ImageTable/Content.h b/DemoClasses/ImageTable/Content.h old mode 100644 new mode 100755 diff --git a/DemoClasses/ImageTable/Content.m b/DemoClasses/ImageTable/Content.m old mode 100644 new mode 100755 diff --git a/DemoClasses/ImageTable/ImgCell.h b/DemoClasses/ImageTable/ImgCell.h old mode 100644 new mode 100755 diff --git a/DemoClasses/ImageTable/ImgCell.m b/DemoClasses/ImageTable/ImgCell.m old mode 100644 new mode 100755 diff --git a/DemoClasses/ImageTable/ImgCell.xib b/DemoClasses/ImageTable/ImgCell.xib old mode 100644 new mode 100755 diff --git a/DemoClasses/ImageTable/ImgTVC.h b/DemoClasses/ImageTable/ImgTVC.h old mode 100644 new mode 100755 diff --git a/DemoClasses/ImageTable/ImgTVC.m b/DemoClasses/ImageTable/ImgTVC.m old mode 100644 new mode 100755 diff --git a/DemoClasses/ImageTable/ImgTVC.xib b/DemoClasses/ImageTable/ImgTVC.xib old mode 100644 new mode 100755 diff --git a/DemoClasses/RootViewController.h b/DemoClasses/RootViewController.h old mode 100644 new mode 100755 diff --git a/DemoClasses/RootViewController.m b/DemoClasses/RootViewController.m old mode 100644 new mode 100755 diff --git a/HJCache-Info.plist b/HJCache-Info.plist old mode 100644 new mode 100755 diff --git a/HJCache.xcodeproj/markj.pbxuser b/HJCache.xcodeproj/markj.pbxuser deleted file mode 100644 index 0bacae4..0000000 --- a/HJCache.xcodeproj/markj.pbxuser +++ /dev/null @@ -1,205 +0,0 @@ -// !$*UTF8*$! -{ - 1D3623240D0F684500981E51 /* HJCacheAppDelegate.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {808, 485}}"; - sepNavSelRange = "{278, 20}"; - sepNavVisRange = "{0, 452}"; - }; - }; - 1D3623250D0F684500981E51 /* HJCacheAppDelegate.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {2244, 1728}}"; - sepNavSelRange = "{991, 0}"; - sepNavVisRange = "{394, 1135}"; - }; - }; - 1D6058900D05DD3D006BFB54 /* HJCache */ = { - activeExec = 0; - executables = ( - DD1DED2D12E288B1004C00BD /* HJCache */, - ); - }; - 29B97313FDCFA39411CA2CEA /* Project object */ = { - activeBuildConfigurationName = Debug; - activeExecutable = DD1DED2D12E288B1004C00BD /* HJCache */; - activeTarget = 1D6058900D05DD3D006BFB54 /* HJCache */; - addToTargets = ( - 1D6058900D05DD3D006BFB54 /* HJCache */, - ); - codeSenseManager = DD1DED3F12E288B7004C00BD /* Code sense */; - executables = ( - DD1DED2D12E288B1004C00BD /* HJCache */, - ); - perUserDictionary = { - PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { - PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; - PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; - PBXFileTableDataSourceColumnWidthsKey = ( - 20, - 485, - 20, - 52, - 43, - 43, - 20, - ); - PBXFileTableDataSourceColumnsKey = ( - PBXFileDataSource_FiletypeID, - PBXFileDataSource_Filename_ColumnID, - PBXFileDataSource_Built_ColumnID, - PBXFileDataSource_ObjectSize_ColumnID, - PBXFileDataSource_Errors_ColumnID, - PBXFileDataSource_Warnings_ColumnID, - PBXFileDataSource_Target_ColumnID, - ); - }; - PBXPerProjectTemplateStateSaveDate = 316836243; - PBXWorkspaceStateSaveDate = 316836243; - }; - perUserProjectItems = { - DD1DEDB312E2B8CE004C00BD /* PBXTextBookmark */ = DD1DEDB312E2B8CE004C00BD /* PBXTextBookmark */; - DD1DEDB412E2B8CE004C00BD /* PBXTextBookmark */ = DD1DEDB412E2B8CE004C00BD /* PBXTextBookmark */; - DD1DEDB512E2B8CE004C00BD /* PBXTextBookmark */ = DD1DEDB512E2B8CE004C00BD /* PBXTextBookmark */; - DD1DEDB612E2B8CE004C00BD /* PBXTextBookmark */ = DD1DEDB612E2B8CE004C00BD /* PBXTextBookmark */; - DD1DEDB712E2B8CE004C00BD /* XCBuildMessageTextBookmark */ = DD1DEDB712E2B8CE004C00BD /* XCBuildMessageTextBookmark */; - DD1DEDB812E2B8CE004C00BD /* PBXTextBookmark */ = DD1DEDB812E2B8CE004C00BD /* PBXTextBookmark */; - DD1DEDD112E2B97D004C00BD /* PBXTextBookmark */ = DD1DEDD112E2B97D004C00BD /* PBXTextBookmark */; - }; - sourceControlManager = DD1DED3E12E288B7004C00BD /* Source Control */; - userBuildSettings = { - }; - }; - DD1DED2D12E288B1004C00BD /* HJCache */ = { - isa = PBXExecutable; - activeArgIndices = ( - ); - argumentStrings = ( - ); - autoAttachOnCrash = 1; - breakpointsEnabled = 0; - configStateDict = { - }; - customDataFormattersEnabled = 1; - dataTipCustomDataFormattersEnabled = 1; - dataTipShowTypeColumn = 1; - dataTipSortType = 0; - debuggerPlugin = GDBDebugging; - disassemblyDisplayState = 0; - dylibVariantSuffix = ""; - enableDebugStr = 1; - environmentEntries = ( - ); - executableSystemSymbolLevel = 0; - executableUserSymbolLevel = 0; - libgmallocEnabled = 0; - name = HJCache; - showTypeColumn = 0; - sourceDirectories = ( - ); - }; - DD1DED3E12E288B7004C00BD /* Source Control */ = { - isa = PBXSourceControlManager; - fallbackIsa = XCSourceControlManager; - isSCMEnabled = 0; - scmConfiguration = { - repositoryNamesForRoots = { - "" = ""; - }; - }; - }; - DD1DED3F12E288B7004C00BD /* Code sense */ = { - isa = PBXCodeSenseManager; - indexTemplatePath = ""; - }; - DD1DED7312E28A52004C00BD /* LICENSE */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {834, 560}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 574}"; - }; - }; - DD1DED7412E28A52004C00BD /* README */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {860, 184}}"; - sepNavSelRange = "{0, 0}"; - sepNavVisRange = "{0, 595}"; - }; - }; - DD1DED7C12E28B37004C00BD /* FlickrSearch.m */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1132, 2448}}"; - sepNavSelRange = "{2062, 0}"; - sepNavVisRange = "{1890, 378}"; - }; - }; - DD1DEDB312E2B8CE004C00BD /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = DD1DED7312E28A52004C00BD /* LICENSE */; - name = "LICENSE: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 574; - vrLoc = 0; - }; - DD1DEDB412E2B8CE004C00BD /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = DD1DED7412E28A52004C00BD /* README */; - name = "README: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 595; - vrLoc = 0; - }; - DD1DEDB512E2B8CE004C00BD /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = DD1DED7C12E28B37004C00BD /* FlickrSearch.m */; - name = "FlickrSearch.m: 75"; - rLen = 0; - rLoc = 2062; - rType = 0; - vrLen = 378; - vrLoc = 1890; - }; - DD1DEDB612E2B8CE004C00BD /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623240D0F684500981E51 /* HJCacheAppDelegate.h */; - name = "HJCacheAppDelegate.h: 14"; - rLen = 20; - rLoc = 278; - rType = 0; - vrLen = 452; - vrLoc = 0; - }; - DD1DEDB712E2B8CE004C00BD /* XCBuildMessageTextBookmark */ = { - isa = PBXTextBookmark; - comments = "'navVC' undeclared (first use in this function)"; - fRef = 1D3623250D0F684500981E51 /* HJCacheAppDelegate.m */; - fallbackIsa = XCBuildMessageTextBookmark; - rLen = 1; - rLoc = 45; - rType = 1; - }; - DD1DEDB812E2B8CE004C00BD /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623250D0F684500981E51 /* HJCacheAppDelegate.m */; - name = "HJCacheAppDelegate.m: 42"; - rLen = 0; - rLoc = 1268; - rType = 0; - vrLen = 1205; - vrLoc = 394; - }; - DD1DEDD112E2B97D004C00BD /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 1D3623250D0F684500981E51 /* HJCacheAppDelegate.m */; - name = "HJCacheAppDelegate.m: 38"; - rLen = 0; - rLoc = 991; - rType = 0; - vrLen = 1135; - vrLoc = 394; - }; -} diff --git a/HJCache.xcodeproj/markj.perspectivev3 b/HJCache.xcodeproj/markj.perspectivev3 deleted file mode 100644 index 068f503..0000000 --- a/HJCache.xcodeproj/markj.perspectivev3 +++ /dev/null @@ -1,1490 +0,0 @@ - - - - - ActivePerspectiveName - Project - AllowedModules - - - BundleLoadPath - - MaxInstances - n - Module - PBXSmartGroupTreeModule - Name - Groups and Files Outline View - - - BundleLoadPath - - MaxInstances - n - Module - PBXNavigatorGroup - Name - Editor - - - BundleLoadPath - - MaxInstances - n - Module - XCTaskListModule - Name - Task List - - - BundleLoadPath - - MaxInstances - n - Module - XCDetailModule - Name - File and Smart Group Detail Viewer - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXBuildResultsModule - Name - Detailed Build Results Viewer - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXProjectFindModule - Name - Project Batch Find Tool - - - BundleLoadPath - - MaxInstances - n - Module - XCProjectFormatConflictsModule - Name - Project Format Conflicts List - - - BundleLoadPath - - MaxInstances - n - Module - PBXBookmarksModule - Name - Bookmarks Tool - - - BundleLoadPath - - MaxInstances - n - Module - PBXClassBrowserModule - Name - Class Browser - - - BundleLoadPath - - MaxInstances - n - Module - PBXCVSModule - Name - Source Code Control Tool - - - BundleLoadPath - - MaxInstances - n - Module - PBXDebugBreakpointsModule - Name - Debug Breakpoints Tool - - - BundleLoadPath - - MaxInstances - n - Module - XCDockableInspector - Name - Inspector - - - BundleLoadPath - - MaxInstances - n - Module - PBXOpenQuicklyModule - Name - Open Quickly Tool - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXDebugSessionModule - Name - Debugger - - - BundleLoadPath - - MaxInstances - 1 - Module - PBXDebugCLIModule - Name - Debug Console - - - BundleLoadPath - - MaxInstances - n - Module - XCSnapshotModule - Name - Snapshots Tool - - - BundlePath - /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources - Description - AIODescriptionKey - DockingSystemVisible - - Extension - perspectivev3 - FavBarConfig - - PBXProjectModuleGUID - DD1DED3D12E288B7004C00BD - XCBarModuleItemNames - - XCBarModuleItems - - - FirstTimeWindowDisplayed - - Identifier - com.apple.perspectives.project.defaultV3 - MajorVersion - 34 - MinorVersion - 0 - Name - All-In-One - Notifications - - OpenEditors - - PerspectiveWidths - - -1 - -1 - - Perspectives - - - ChosenToolbarItems - - XCToolbarPerspectiveControl - NSToolbarSeparatorItem - active-combo-popup - action - NSToolbarFlexibleSpaceItem - servicesModuleRefactoring - debugger-fix-and-continue - clean - build - debugger-enable-breakpoints - build-and-go - com.apple.ide.PBXToolbarStopButton - servicesModulebuild - get-info - servicesModuleclasses - NSToolbarFlexibleSpaceItem - com.apple.pbx.toolbar.searchfield - - ControllerClassBaseName - - IconName - WindowOfProject - Identifier - perspective.project - IsVertical - - Layout - - - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C37FBAC04509CD000000102 - 1C37FAAC04509CD000000102 - 1C37FABC05509CD000000102 - 1C37FABC05539CD112110102 - E2644B35053B69B200211256 - 1C37FABC04509CD000100104 - 1CC0EA4004350EF90044410B - 1CC0EA4004350EF90041110B - 1C77FABC04509CD000000102 - - PBXProjectModuleGUID - 1CA23ED40692098700951B8B - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - yes - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 211 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 29B97314FDCFA39411CA2CEA - 080E96DDFE201D6D7F000001 - 29B97317FDCFA39411CA2CEA - 19C28FACFE9D520D11CA2CBB - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 10 - 0 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {211, 707}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - - - GeometryConfiguration - - Frame - {{0, 0}, {228, 725}} - GroupTreeTableConfiguration - - MainColumn - 211 - - RubberWindowFrame - 551 233 1090 766 0 0 1680 1028 - - Module - PBXSmartGroupTreeModule - Proportion - 228pt - - - Dock - - - BecomeActive - - ContentConfiguration - - PBXProjectModuleGUID - DD1DED3812E288B7004C00BD - PBXProjectModuleLabel - HJCacheAppDelegate.m - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - DD1DED3912E288B7004C00BD - PBXProjectModuleLabel - HJCacheAppDelegate.m - _historyCapacity - 0 - bookmark - DD1DEDD112E2B97D004C00BD - history - - DD1DEDB312E2B8CE004C00BD - DD1DEDB412E2B8CE004C00BD - DD1DEDB512E2B8CE004C00BD - DD1DEDB612E2B8CE004C00BD - DD1DEDB712E2B8CE004C00BD - - - SplitCount - 1 - - StatusBarVisibility - - XCSharingToken - com.apple.Xcode.CommonNavigatorGroupSharingToken - - GeometryConfiguration - - Frame - {{0, 0}, {857, 517}} - RubberWindowFrame - 551 233 1090 766 0 0 1680 1028 - - Module - PBXNavigatorGroup - Proportion - 517pt - - - Proportion - 203pt - Tabs - - - ContentConfiguration - - PBXProjectModuleGUID - 1CA23EDF0692099D00951B8B - PBXProjectModuleLabel - Detail - - GeometryConfiguration - - Frame - {{10, 27}, {728, 477}} - - Module - XCDetailModule - - - ContentConfiguration - - PBXProjectModuleGUID - 1CA23EE00692099D00951B8B - PBXProjectModuleLabel - Project Find - - GeometryConfiguration - - Frame - {{10, 31}, {603, 297}} - - Module - PBXProjectFindModule - - - ContentConfiguration - - PBXCVSModuleFilterTypeKey - 1032 - PBXProjectModuleGUID - 1CA23EE10692099D00951B8B - PBXProjectModuleLabel - SCM Results - - GeometryConfiguration - - Frame - {{10, 31}, {603, 297}} - - Module - PBXCVSModule - - - ContentConfiguration - - PBXProjectModuleGUID - XCMainBuildResultsModuleGUID - PBXProjectModuleLabel - Build Results - XCBuildResultsTrigger_Collapse - 1021 - XCBuildResultsTrigger_Open - 1011 - - GeometryConfiguration - - Frame - {{10, 27}, {857, 176}} - RubberWindowFrame - 551 233 1090 766 0 0 1680 1028 - - Module - PBXBuildResultsModule - - - - - Proportion - 857pt - - - Name - Project - ServiceClasses - - XCModuleDock - PBXSmartGroupTreeModule - XCModuleDock - PBXNavigatorGroup - XCDockableTabModule - XCDetailModule - PBXProjectFindModule - PBXCVSModule - PBXBuildResultsModule - - TableOfContents - - DD1DED4D12E28999004C00BD - 1CA23ED40692098700951B8B - DD1DED4E12E28999004C00BD - DD1DED3812E288B7004C00BD - DD1DED4F12E28999004C00BD - 1CA23EDF0692099D00951B8B - 1CA23EE00692099D00951B8B - 1CA23EE10692099D00951B8B - XCMainBuildResultsModuleGUID - - ToolbarConfigUserDefaultsMinorVersion - 2 - ToolbarConfiguration - xcode.toolbar.config.defaultV3 - - - ChosenToolbarItems - - XCToolbarPerspectiveControl - NSToolbarSeparatorItem - active-combo-popup - NSToolbarFlexibleSpaceItem - servicesModuleRefactoring - clean - build - debugger-enable-breakpoints - build-and-go - com.apple.ide.PBXToolbarStopButton - debugger-restart-executable - debugger-pause - debugger-step-over - debugger-step-into - debugger-step-out - NSToolbarFlexibleSpaceItem - servicesModulebreakpoints - debugger-show-console-window - - ControllerClassBaseName - PBXDebugSessionModule - IconName - DebugTabIcon - Identifier - perspective.debug - IsVertical - - Layout - - - ContentConfiguration - - PBXProjectModuleGUID - 1CCC7628064C1048000F2A68 - PBXProjectModuleLabel - Debugger Console - - GeometryConfiguration - - Frame - {{0, 0}, {424, 270}} - - Module - PBXDebugCLIModule - Proportion - 270pt - - - ContentConfiguration - - Debugger - - HorizontalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {395, 213}} - {{395, 0}, {415, 213}} - - - VerticalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {810, 213}} - {{0, 213}, {810, 225}} - - - - LauncherConfigVersion - 8 - PBXProjectModuleGUID - 1CCC7629064C1048000F2A68 - PBXProjectModuleLabel - Debug - - GeometryConfiguration - - DebugConsoleVisible - None - DebugConsoleWindowFrame - {{200, 200}, {500, 300}} - DebugSTDIOWindowFrame - {{200, 200}, {500, 300}} - Frame - {{0, 7}, {810, 438}} - PBXDebugSessionStackFrameViewKey - - DebugVariablesTableConfiguration - - Name - 120 - Value - 85 - Summary - 185 - - Frame - {{395, 0}, {415, 213}} - - - Module - PBXDebugSessionModule - Proportion - 438pt - - - Name - Debug - ServiceClasses - - XCModuleDock - PBXDebugCLIModule - PBXDebugSessionModule - PBXDebugProcessAndThreadModule - PBXDebugProcessViewModule - PBXDebugThreadViewModule - PBXDebugStackFrameViewModule - PBXNavigatorGroup - - TableOfContents - - DD1DEDB912E2B8CE004C00BD - 1CCC7628064C1048000F2A68 - 1CCC7629064C1048000F2A68 - DD1DEDBA12E2B8CE004C00BD - DD1DEDBB12E2B8CE004C00BD - DD1DEDBC12E2B8CE004C00BD - DD1DEDBD12E2B8CE004C00BD - DD1DEDBE12E2B8CE004C00BD - - ToolbarConfigUserDefaultsMinorVersion - 2 - ToolbarConfiguration - xcode.toolbar.config.debugV3 - - - PerspectivesBarVisible - - ShelfIsVisible - - SourceDescription - file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecification.xcperspec' - StatusbarIsVisible - - TimeStamp - 0.0 - ToolbarConfigUserDefaultsMinorVersion - 2 - ToolbarDisplayMode - 1 - ToolbarIsVisible - - ToolbarSizeMode - 2 - Type - Perspectives - UpdateMessage - - WindowJustification - 5 - WindowOrderList - - /Users/markj/proj/HJCache/HJCache.xcodeproj - - WindowString - 551 233 1090 766 0 0 1680 1028 - WindowToolsV3 - - - Identifier - windowTool.debugger - Layout - - - Dock - - - ContentConfiguration - - Debugger - - HorizontalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {317, 164}} - {{317, 0}, {377, 164}} - - - VerticalSplitView - - _collapsingFrameDimension - 0.0 - _indexOfCollapsedView - 0 - _percentageOfCollapsedView - 0.0 - isCollapsed - yes - sizes - - {{0, 0}, {694, 164}} - {{0, 164}, {694, 216}} - - - - LauncherConfigVersion - 8 - PBXProjectModuleGUID - 1C162984064C10D400B95A72 - PBXProjectModuleLabel - Debug - GLUTExamples (Underwater) - - GeometryConfiguration - - DebugConsoleDrawerSize - {100, 120} - DebugConsoleVisible - None - DebugConsoleWindowFrame - {{200, 200}, {500, 300}} - DebugSTDIOWindowFrame - {{200, 200}, {500, 300}} - Frame - {{0, 0}, {694, 380}} - RubberWindowFrame - 321 238 694 422 0 0 1440 878 - - Module - PBXDebugSessionModule - Proportion - 100% - - - Proportion - 100% - - - Name - Debugger - ServiceClasses - - PBXDebugSessionModule - - StatusbarIsVisible - 1 - TableOfContents - - 1CD10A99069EF8BA00B06720 - 1C0AD2AB069F1E9B00FABCE6 - 1C162984064C10D400B95A72 - 1C0AD2AC069F1E9B00FABCE6 - - ToolbarConfiguration - xcode.toolbar.config.debugV3 - WindowString - 321 238 694 422 0 0 1440 878 - WindowToolGUID - 1CD10A99069EF8BA00B06720 - WindowToolIsVisible - 0 - - - Identifier - windowTool.build - Layout - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1CD0528F0623707200166675 - PBXProjectModuleLabel - <No Editor> - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1CD052900623707200166675 - - SplitCount - 1 - - StatusBarVisibility - 1 - - GeometryConfiguration - - Frame - {{0, 0}, {500, 215}} - RubberWindowFrame - 192 257 500 500 0 0 1280 1002 - - Module - PBXNavigatorGroup - Proportion - 218pt - - - BecomeActive - 1 - ContentConfiguration - - PBXProjectModuleGUID - XCMainBuildResultsModuleGUID - PBXProjectModuleLabel - Build Results - - GeometryConfiguration - - Frame - {{0, 222}, {500, 236}} - RubberWindowFrame - 192 257 500 500 0 0 1280 1002 - - Module - PBXBuildResultsModule - Proportion - 236pt - - - Proportion - 458pt - - - Name - Build Results - ServiceClasses - - PBXBuildResultsModule - - StatusbarIsVisible - 1 - TableOfContents - - 1C78EAA5065D492600B07095 - 1C78EAA6065D492600B07095 - 1CD0528F0623707200166675 - XCMainBuildResultsModuleGUID - - ToolbarConfiguration - xcode.toolbar.config.buildV3 - WindowString - 192 257 500 500 0 0 1280 1002 - - - Identifier - windowTool.find - Layout - - - Dock - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1CDD528C0622207200134675 - PBXProjectModuleLabel - <No Editor> - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1CD0528D0623707200166675 - - SplitCount - 1 - - StatusBarVisibility - 1 - - GeometryConfiguration - - Frame - {{0, 0}, {781, 167}} - RubberWindowFrame - 62 385 781 470 0 0 1440 878 - - Module - PBXNavigatorGroup - Proportion - 781pt - - - Proportion - 50% - - - BecomeActive - 1 - ContentConfiguration - - PBXProjectModuleGUID - 1CD0528E0623707200166675 - PBXProjectModuleLabel - Project Find - - GeometryConfiguration - - Frame - {{8, 0}, {773, 254}} - RubberWindowFrame - 62 385 781 470 0 0 1440 878 - - Module - PBXProjectFindModule - Proportion - 50% - - - Proportion - 428pt - - - Name - Project Find - ServiceClasses - - PBXProjectFindModule - - StatusbarIsVisible - 1 - TableOfContents - - 1C530D57069F1CE1000CFCEE - 1C530D58069F1CE1000CFCEE - 1C530D59069F1CE1000CFCEE - 1CDD528C0622207200134675 - 1C530D5A069F1CE1000CFCEE - 1CE0B1FE06471DED0097A5F4 - 1CD0528E0623707200166675 - - WindowString - 62 385 781 470 0 0 1440 878 - WindowToolGUID - 1C530D57069F1CE1000CFCEE - WindowToolIsVisible - 0 - - - Identifier - windowTool.snapshots - Layout - - - Dock - - - Module - XCSnapshotModule - Proportion - 100% - - - Proportion - 100% - - - Name - Snapshots - ServiceClasses - - XCSnapshotModule - - StatusbarIsVisible - Yes - ToolbarConfiguration - xcode.toolbar.config.snapshots - WindowString - 315 824 300 550 0 0 1440 878 - WindowToolIsVisible - Yes - - - Identifier - windowTool.debuggerConsole - Layout - - - Dock - - - BecomeActive - 1 - ContentConfiguration - - PBXProjectModuleGUID - 1C78EAAC065D492600B07095 - PBXProjectModuleLabel - Debugger Console - - GeometryConfiguration - - Frame - {{0, 0}, {700, 358}} - RubberWindowFrame - 149 87 700 400 0 0 1440 878 - - Module - PBXDebugCLIModule - Proportion - 358pt - - - Proportion - 358pt - - - Name - Debugger Console - ServiceClasses - - PBXDebugCLIModule - - StatusbarIsVisible - 1 - TableOfContents - - 1C530D5B069F1CE1000CFCEE - 1C530D5C069F1CE1000CFCEE - 1C78EAAC065D492600B07095 - - ToolbarConfiguration - xcode.toolbar.config.consoleV3 - WindowString - 149 87 440 400 0 0 1440 878 - WindowToolGUID - 1C530D5B069F1CE1000CFCEE - WindowToolIsVisible - 0 - - - Identifier - windowTool.scm - Layout - - - Dock - - - ContentConfiguration - - PBXProjectModuleGUID - 1C78EAB2065D492600B07095 - PBXProjectModuleLabel - <No Editor> - PBXSplitModuleInNavigatorKey - - Split0 - - PBXProjectModuleGUID - 1C78EAB3065D492600B07095 - - SplitCount - 1 - - StatusBarVisibility - 1 - - GeometryConfiguration - - Frame - {{0, 0}, {452, 0}} - RubberWindowFrame - 743 379 452 308 0 0 1280 1002 - - Module - PBXNavigatorGroup - Proportion - 0pt - - - BecomeActive - 1 - ContentConfiguration - - PBXProjectModuleGUID - 1CD052920623707200166675 - PBXProjectModuleLabel - SCM - - GeometryConfiguration - - ConsoleFrame - {{0, 259}, {452, 0}} - Frame - {{0, 7}, {452, 259}} - RubberWindowFrame - 743 379 452 308 0 0 1280 1002 - TableConfiguration - - Status - 30 - FileName - 199 - Path - 197.09500122070312 - - TableFrame - {{0, 0}, {452, 250}} - - Module - PBXCVSModule - Proportion - 262pt - - - Proportion - 266pt - - - Name - SCM - ServiceClasses - - PBXCVSModule - - StatusbarIsVisible - 1 - TableOfContents - - 1C78EAB4065D492600B07095 - 1C78EAB5065D492600B07095 - 1C78EAB2065D492600B07095 - 1CD052920623707200166675 - - ToolbarConfiguration - xcode.toolbar.config.scmV3 - WindowString - 743 379 452 308 0 0 1280 1002 - - - Identifier - windowTool.breakpoints - IsVertical - 0 - Layout - - - Dock - - - BecomeActive - 1 - ContentConfiguration - - PBXBottomSmartGroupGIDs - - 1C77FABC04509CD000000102 - - PBXProjectModuleGUID - 1CE0B1FE06471DED0097A5F4 - PBXProjectModuleLabel - Files - PBXProjectStructureProvided - no - PBXSmartGroupTreeModuleColumnData - - PBXSmartGroupTreeModuleColumnWidthsKey - - 168 - - PBXSmartGroupTreeModuleColumnsKey_v4 - - MainColumn - - - PBXSmartGroupTreeModuleOutlineStateKey_v7 - - PBXSmartGroupTreeModuleOutlineStateExpansionKey - - 1C77FABC04509CD000000102 - - PBXSmartGroupTreeModuleOutlineStateSelectionKey - - - 0 - - - PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {168, 350}} - - PBXTopSmartGroupGIDs - - XCIncludePerspectivesSwitch - 0 - - GeometryConfiguration - - Frame - {{0, 0}, {185, 368}} - GroupTreeTableConfiguration - - MainColumn - 168 - - RubberWindowFrame - 315 424 744 409 0 0 1440 878 - - Module - PBXSmartGroupTreeModule - Proportion - 185pt - - - ContentConfiguration - - PBXProjectModuleGUID - 1CA1AED706398EBD00589147 - PBXProjectModuleLabel - Detail - - GeometryConfiguration - - Frame - {{190, 0}, {554, 368}} - RubberWindowFrame - 315 424 744 409 0 0 1440 878 - - Module - XCDetailModule - Proportion - 554pt - - - Proportion - 368pt - - - MajorVersion - 3 - MinorVersion - 0 - Name - Breakpoints - ServiceClasses - - PBXSmartGroupTreeModule - XCDetailModule - - StatusbarIsVisible - 1 - TableOfContents - - 1CDDB66807F98D9800BB5817 - 1CDDB66907F98D9800BB5817 - 1CE0B1FE06471DED0097A5F4 - 1CA1AED706398EBD00589147 - - ToolbarConfiguration - xcode.toolbar.config.breakpointsV3 - WindowString - 315 424 744 409 0 0 1440 878 - WindowToolGUID - 1CDDB66807F98D9800BB5817 - WindowToolIsVisible - 1 - - - Identifier - windowTool.debugAnimator - Layout - - - Dock - - - Module - PBXNavigatorGroup - Proportion - 100% - - - Proportion - 100% - - - Name - Debug Visualizer - ServiceClasses - - PBXNavigatorGroup - - StatusbarIsVisible - 1 - ToolbarConfiguration - xcode.toolbar.config.debugAnimatorV3 - WindowString - 100 100 700 500 0 0 1280 1002 - - - Identifier - windowTool.bookmarks - Layout - - - Dock - - - Module - PBXBookmarksModule - Proportion - 166pt - - - Proportion - 166pt - - - Name - Bookmarks - ServiceClasses - - PBXBookmarksModule - - StatusbarIsVisible - 0 - WindowString - 538 42 401 187 0 0 1280 1002 - - - Identifier - windowTool.projectFormatConflicts - Layout - - - Dock - - - Module - XCProjectFormatConflictsModule - Proportion - 100% - - - Proportion - 100% - - - Name - Project Format Conflicts - ServiceClasses - - XCProjectFormatConflictsModule - - StatusbarIsVisible - 0 - WindowContentMinSize - 450 300 - WindowString - 50 850 472 307 0 0 1440 877 - - - Identifier - windowTool.classBrowser - Layout - - - Dock - - - BecomeActive - 1 - ContentConfiguration - - OptionsSetName - Hierarchy, all classes - PBXProjectModuleGUID - 1CA6456E063B45B4001379D8 - PBXProjectModuleLabel - Class Browser - NSObject - - GeometryConfiguration - - ClassesFrame - {{0, 0}, {369, 96}} - ClassesTreeTableConfiguration - - PBXClassNameColumnIdentifier - 208 - PBXClassBookColumnIdentifier - 22 - - Frame - {{0, 0}, {616, 353}} - MembersFrame - {{0, 105}, {369, 395}} - MembersTreeTableConfiguration - - PBXMemberTypeIconColumnIdentifier - 22 - PBXMemberNameColumnIdentifier - 216 - PBXMemberTypeColumnIdentifier - 94 - PBXMemberBookColumnIdentifier - 22 - - PBXModuleWindowStatusBarHidden2 - 1 - RubberWindowFrame - 597 125 616 374 0 0 1280 1002 - - Module - PBXClassBrowserModule - Proportion - 354pt - - - Proportion - 354pt - - - Name - Class Browser - ServiceClasses - - PBXClassBrowserModule - - StatusbarIsVisible - 0 - TableOfContents - - 1C78EABA065D492600B07095 - 1C78EABB065D492600B07095 - 1CA6456E063B45B4001379D8 - - ToolbarConfiguration - xcode.toolbar.config.classbrowser - WindowString - 597 125 616 374 0 0 1280 1002 - - - Identifier - windowTool.refactoring - IncludeInToolsMenu - 0 - Layout - - - Dock - - - BecomeActive - 1 - GeometryConfiguration - - Frame - {0, 0}, {500, 335} - RubberWindowFrame - {0, 0}, {500, 335} - - Module - XCRefactoringModule - Proportion - 100% - - - Proportion - 100% - - - Name - Refactoring - ServiceClasses - - XCRefactoringModule - - WindowString - 200 200 500 356 0 0 1920 1200 - - - - diff --git a/HJCache.xcodeproj/project.pbxproj b/HJCache.xcodeproj/project.pbxproj index b9674a6..329142b 100755 --- a/HJCache.xcodeproj/project.pbxproj +++ b/HJCache.xcodeproj/project.pbxproj @@ -26,8 +26,6 @@ DD1DED7012E28A12004C00BD /* HJWeakMutableArray.m in Sources */ = {isa = PBXBuildFile; fileRef = DD1DED6712E28A12004C00BD /* HJWeakMutableArray.m */; }; DD1DED7512E28A52004C00BD /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = DD1DED7312E28A52004C00BD /* LICENSE */; }; DD1DED7612E28A52004C00BD /* README in Resources */ = {isa = PBXBuildFile; fileRef = DD1DED7412E28A52004C00BD /* README */; }; - DD1DED8212E28B37004C00BD /* FlickrSearcgTVC.m in Sources */ = {isa = PBXBuildFile; fileRef = DD1DED7912E28B37004C00BD /* FlickrSearcgTVC.m */; }; - DD1DED8312E28B37004C00BD /* FlickrSearcgTVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = DD1DED7A12E28B37004C00BD /* FlickrSearcgTVC.xib */; }; DD1DED8412E28B37004C00BD /* FlickrSearch.m in Sources */ = {isa = PBXBuildFile; fileRef = DD1DED7C12E28B37004C00BD /* FlickrSearch.m */; }; DD1DED8512E28B37004C00BD /* FlickrSearchRes.m in Sources */ = {isa = PBXBuildFile; fileRef = DD1DED7E12E28B37004C00BD /* FlickrSearchRes.m */; }; DD1DED8612E28B37004C00BD /* FlickrSearchTVC.m in Sources */ = {isa = PBXBuildFile; fileRef = DD1DED8012E28B37004C00BD /* FlickrSearchTVC.m */; }; @@ -82,9 +80,6 @@ DD1DED6712E28A12004C00BD /* HJWeakMutableArray.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HJWeakMutableArray.m; sourceTree = ""; }; DD1DED7312E28A52004C00BD /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; DD1DED7412E28A52004C00BD /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; - DD1DED7812E28B37004C00BD /* FlickrSearcgTVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FlickrSearcgTVC.h; sourceTree = ""; }; - DD1DED7912E28B37004C00BD /* FlickrSearcgTVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FlickrSearcgTVC.m; sourceTree = ""; }; - DD1DED7A12E28B37004C00BD /* FlickrSearcgTVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FlickrSearcgTVC.xib; sourceTree = ""; }; DD1DED7B12E28B37004C00BD /* FlickrSearch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FlickrSearch.h; sourceTree = ""; }; DD1DED7C12E28B37004C00BD /* FlickrSearch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FlickrSearch.m; sourceTree = ""; }; DD1DED7D12E28B37004C00BD /* FlickrSearchRes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FlickrSearchRes.h; sourceTree = ""; }; @@ -219,9 +214,6 @@ DD1DED7712E28B37004C00BD /* Flickr */ = { isa = PBXGroup; children = ( - DD1DED7812E28B37004C00BD /* FlickrSearcgTVC.h */, - DD1DED7912E28B37004C00BD /* FlickrSearcgTVC.m */, - DD1DED7A12E28B37004C00BD /* FlickrSearcgTVC.xib */, DD1DED7B12E28B37004C00BD /* FlickrSearch.h */, DD1DED7C12E28B37004C00BD /* FlickrSearch.m */, DD1DED7D12E28B37004C00BD /* FlickrSearchRes.h */, @@ -316,7 +308,6 @@ 28F335F11007B36200424DE2 /* RootViewController.xib in Resources */, DD1DED7512E28A52004C00BD /* LICENSE in Resources */, DD1DED7612E28A52004C00BD /* README in Resources */, - DD1DED8312E28B37004C00BD /* FlickrSearcgTVC.xib in Resources */, DD1DED8712E28B37004C00BD /* FlickrSearchTVC.xib in Resources */, DD1DED9312E28B3E004C00BD /* ImgCell.xib in Resources */, DD1DED9512E28B3E004C00BD /* ImgTVC.xib in Resources */, @@ -349,7 +340,6 @@ DD1DED6E12E28A12004C00BD /* HJMOUserBase.m in Sources */, DD1DED6F12E28A12004C00BD /* HJObjManager.m in Sources */, DD1DED7012E28A12004C00BD /* HJWeakMutableArray.m in Sources */, - DD1DED8212E28B37004C00BD /* FlickrSearcgTVC.m in Sources */, DD1DED8412E28B37004C00BD /* FlickrSearch.m in Sources */, DD1DED8512E28B37004C00BD /* FlickrSearchRes.m in Sources */, DD1DED8612E28B37004C00BD /* FlickrSearchTVC.m in Sources */, diff --git a/HJCacheClasses/HJCircularBuffer.h b/HJCacheClasses/HJCircularBuffer.h old mode 100644 new mode 100755 index 727307f..cc7de63 --- a/HJCacheClasses/HJCircularBuffer.h +++ b/HJCacheClasses/HJCircularBuffer.h @@ -5,17 +5,18 @@ // Copyright Hunter and Johnson 2009, 2010, 2011 // HJCache may be used freely in any iOS or Mac application free or commercial. // May be redistributed as source code only if all the original files are included. -// See http://www.markj.net +// See http://www.markj.net/hjcache-iphone-image-cache/ #import -//Fixed size buffer (array) that you can add objects to in turn, when it gets full to the end of the array, -// it starts again from the front of the array replacing old objects with new ones. -// Is implemented with an array full of [NSNull null] objects, so putting nulls in is like deleting the object at -// the next available slot. The NSNulls never come out of this data structure, nil is returned instead of NSNull. - +/* + Fixed size buffer (array) that you can add objects to. When it gets full to the end of the array, + it starts again from the front of the array replacing old objects with new ones. + Is implemented with an array full of [NSNull null] objects, so putting nulls in is like deleting the object at + the next available slot. The NSNulls never come out of this data structure, nil is returned instead of NSNull. +*/ @interface HJCircularBuffer : NSObject { NSMutableArray* buffer; int nextIndex; diff --git a/HJCacheClasses/HJCircularBuffer.m b/HJCacheClasses/HJCircularBuffer.m old mode 100644 new mode 100755 index a9bc5ca..5669df0 --- a/HJCacheClasses/HJCircularBuffer.m +++ b/HJCacheClasses/HJCircularBuffer.m @@ -5,7 +5,7 @@ // Copyright Hunter and Johnson 2009, 2010, 2011 // HJCache may be used freely in any iOS or Mac application free or commercial. // May be redistributed as source code only if all the original files are included. -// See http://www.markj.net +// See http://www.markj.net/hjcache-iphone-image-cache/ #import "HJCircularBuffer.h" diff --git a/HJCacheClasses/HJMOBigFileCache.h b/HJCacheClasses/HJMOBigFileCache.h old mode 100644 new mode 100755 index 798d22f..0d4f7f1 --- a/HJCacheClasses/HJMOBigFileCache.h +++ b/HJCacheClasses/HJMOBigFileCache.h @@ -5,12 +5,17 @@ // Copyright Hunter and Johnson 2009, 2010, 2011 // HJCache may be used freely in any iOS or Mac application free or commercial. // May be redistributed as source code only if all the original files are included. -// See http://www.markj.net +// See http://www.markj.net/hjcache-iphone-image-cache/ #import #import "HJMOFileCache.h" - +/* + HJBigFileCache is more scalable for very large caches. When the cache gets very + large, then the trim time gets big because trimming the size of the cache requires + scanning through all of its files and checking their age and size. HJBigFileCache + divides that probem into 10 by trimming 1/10th of the cache each day in a 10 day cycle. + */ @interface HJMOBigFileCache : HJMOFileCache { diff --git a/HJCacheClasses/HJMOBigFileCache.m b/HJCacheClasses/HJMOBigFileCache.m old mode 100644 new mode 100755 index 0ce5bb4..b934f9e --- a/HJCacheClasses/HJMOBigFileCache.m +++ b/HJCacheClasses/HJMOBigFileCache.m @@ -5,7 +5,8 @@ // Copyright Hunter and Johnson 2009, 2010, 2011 // HJCache may be used freely in any iOS or Mac application free or commercial. // May be redistributed as source code only if all the original files are included. -// See http://www.markj.net +// See http://www.markj.net/hjcache-iphone-image-cache/ + #import "HJMOBigFileCache.h" diff --git a/HJCacheClasses/HJMOFileCache.h b/HJCacheClasses/HJMOFileCache.h old mode 100644 new mode 100755 index 5742237..6cbbb24 --- a/HJCacheClasses/HJMOFileCache.h +++ b/HJCacheClasses/HJMOFileCache.h @@ -5,10 +5,14 @@ // Copyright Hunter and Johnson 2009, 2010, 2011 // HJCache may be used freely in any iOS or Mac application free or commercial. // May be redistributed as source code only if all the original files are included. -// See http://www.markj.net +// See http://www.markj.net/hjcache-iphone-image-cache/ #import +/* + Provides file caching for the object manager. Its able to trim its size so it + doesn't grow forever. See also HJBigFileCache. + */ @interface HJMOFileCache : NSObject { diff --git a/HJCacheClasses/HJMOFileCache.m b/HJCacheClasses/HJMOFileCache.m old mode 100644 new mode 100755 index c239868..ddc764f --- a/HJCacheClasses/HJMOFileCache.m +++ b/HJCacheClasses/HJMOFileCache.m @@ -5,7 +5,7 @@ // Copyright Hunter and Johnson 2009, 2010, 2011 // HJCache may be used freely in any iOS or Mac application free or commercial. // May be redistributed as source code only if all the original files are included. -// See http://www.markj.net +// See http://www.markj.net/hjcache-iphone-image-cache/ #import "HJMOFileCache.h" diff --git a/HJCacheClasses/HJMOHandler.h b/HJCacheClasses/HJMOHandler.h old mode 100644 new mode 100755 index a29ab7c..5e6715d --- a/HJCacheClasses/HJMOHandler.h +++ b/HJCacheClasses/HJMOHandler.h @@ -5,7 +5,7 @@ // Copyright Hunter and Johnson 2009, 2010, 2011 // HJCache may be used freely in any iOS or Mac application free or commercial. // May be redistributed as source code only if all the original files are included. -// See http://www.markj.net +// See http://www.markj.net/hjcache-iphone-image-cache/ #import #import "HJWeakMutableArray.h" @@ -13,6 +13,12 @@ @class HJObjManager; @class HJMOPolicy; +/* + HJMOHandler is an internal class, and should not be used directly + for most users of HJCache. The handler is responsible for sharing the managed object between + different HJMOUsers, and loading it from url. If two HJMOUsers have the same oid (or url) + then they share the same handler instance. + */ @interface HJMOHandler : NSObject { enum HJMOState { stateNew, stateLoading, stateLoaded, stateReady, stateFailed } state; diff --git a/HJCacheClasses/HJMOHandler.m b/HJCacheClasses/HJMOHandler.m old mode 100644 new mode 100755 index 7c57db4..0036830 --- a/HJCacheClasses/HJMOHandler.m +++ b/HJCacheClasses/HJMOHandler.m @@ -5,7 +5,7 @@ // Copyright Hunter and Johnson 2009, 2010, 2011 // HJCache may be used freely in any iOS or Mac application free or commercial. // May be redistributed as source code only if all the original files are included. -// See http://www.markj.net +// See http://www.markj.net/hjcache-iphone-image-cache/ #import "HJMOHandler.h" #import "HJMOUser.h" diff --git a/HJCacheClasses/HJMOPolicy.h b/HJCacheClasses/HJMOPolicy.h old mode 100644 new mode 100755 index fbe0991..11fdbab --- a/HJCacheClasses/HJMOPolicy.h +++ b/HJCacheClasses/HJMOPolicy.h @@ -5,28 +5,40 @@ // Copyright Hunter and Johnson 2009, 2010, 2011 // HJCache may be used freely in any iOS or Mac application free or commercial. // May be redistributed as source code only if all the original files are included. -// See http://www.markj.net +// See http://www.markj.net/hjcache-iphone-image-cache/ #import +/* + The policy has some settings for customizing how the object manger works. + Its optional, as the object manager has a default policy + */ @interface HJMOPolicy : NSObject { - BOOL loadToFile; - BOOL cacheInMemory; - BOOL asyncStartLoad; - BOOL asyncIsReadyIfCached; NSTimeInterval urlTimeoutTime; + + //if YES, then when accessing a managed object that has a cahce file, the date on that + //cache file is updated, so that the file cache can trim its size by deleting only + //objects that have not been accessed recently BOOL readsUpdateFileDate; + + // TODO: make object manager use these parts of the policy + //BOOL loadToFile; + //BOOL cacheInMemory; + //BOOL asyncStartLoad; + //BOOL asyncIsReadyIfCached; } -@property BOOL loadToFile; -@property BOOL cacheInMemory; -@property BOOL asyncStartLoad; -@property BOOL asyncIsReadyIfCached; @property NSTimeInterval urlTimeoutTime; @property BOOL readsUpdateFileDate; + +//@property BOOL loadToFile; +//@property BOOL cacheInMemory; +//@property BOOL asyncStartLoad; +//@property BOOL asyncIsReadyIfCached; + +(HJMOPolicy*) smallImgFastScrollLRUCachePolicy; diff --git a/HJCacheClasses/HJMOPolicy.m b/HJCacheClasses/HJMOPolicy.m old mode 100644 new mode 100755 index cf76174..25f0eba --- a/HJCacheClasses/HJMOPolicy.m +++ b/HJCacheClasses/HJMOPolicy.m @@ -5,20 +5,21 @@ // Copyright Hunter and Johnson 2009, 2010, 2011 // HJCache may be used freely in any iOS or Mac application free or commercial. // May be redistributed as source code only if all the original files are included. -// See http://www.markj.net +// See http://www.markj.net/hjcache-iphone-image-cache/ #import "HJMOPolicy.h" @implementation HJMOPolicy -@synthesize loadToFile; -@synthesize cacheInMemory; -@synthesize asyncStartLoad; -@synthesize asyncIsReadyIfCached; @synthesize urlTimeoutTime; @synthesize readsUpdateFileDate; +//@synthesize loadToFile; +//@synthesize cacheInMemory; +//@synthesize asyncStartLoad; +//@synthesize asyncIsReadyIfCached; + +(HJMOPolicy*) smallImgFastScrollLRUCachePolicy { //this is the default policy settings. @@ -29,12 +30,14 @@ +(HJMOPolicy*) smallImgFastScrollLRUCachePolicy { /** default policy is good for small images, fast scrolling, async updates, LRU file cache */ -(HJMOPolicy*)init { [super init]; - self.loadToFile = YES; - self.cacheInMemory = YES; - self.asyncStartLoad = YES; - self.asyncIsReadyIfCached = YES; self.urlTimeoutTime = 30; - readsUpdateFileDate = YES; + self.readsUpdateFileDate = YES; + + //self.loadToFile = YES; + //self.cacheInMemory = YES; + //self.asyncStartLoad = YES; + //self.asyncIsReadyIfCached = YES; + return self; } diff --git a/HJCacheClasses/HJMOUser.h b/HJCacheClasses/HJMOUser.h old mode 100644 new mode 100755 index 3578d9e..4d16707 --- a/HJCacheClasses/HJMOUser.h +++ b/HJCacheClasses/HJMOUser.h @@ -5,21 +5,64 @@ // Copyright Hunter and Johnson 2009, 2010, 2011 // HJCache may be used freely in any iOS or Mac application free or commercial. // May be redistributed as source code only if all the original files are included. -// See http://www.markj.net +// See http://www.markj.net/hjcache-iphone-image-cache/ #import + @class HJMOHandler; +/* + HJMOUser is a protocol that is used to make a class works with a 'managed object' that can + then be managed by the HJCache object manager. The HJMOUser contains a managed object and supplies + information about it, and the managed object itself gets loaded, cached, shared, by the object + manager. + See the implementation of HJManagedImageV as a referance for writting your own HJMOUser classes. + */ @protocol HJMOUser -@property (nonatomic, retain) HJMOHandler* moHandler; +/* + The object id for the managed object this HJMOUser is using. You can leave the oid nil, + and the url will be used as the oid. Some servers will tell you different urls for loading the + same image as part of their server load balancing design. Eg if you get photos from facebook, + then facebook will send you different urls for the same photo id. By using oid you can 'de-dupe' + those urls and prevent multiple network loads for images that are already cached. + */ @property (nonatomic, retain) id oid; + +/* + The url from which to load the managed object data + */ @property (nonatomic, retain) NSURL* url; +/* + The handler is an internal object to HJCache and its what ties the managed object user together + with the managed object and the object manager. moHandler must be released in the dealloc + method of any HJMOUser class. The handler has a weak reference to the HJMOUser, so + dealloc will be called acording to normal Cocoa memory management conventions whether or not + the managed object is being cached, etc. + */ +@property (nonatomic, retain) HJMOHandler* moHandler; +/* + This method is called by the object manager after data has been loaded from url or cache, + to create the managed object itself. Its this method that allows the HJCache to manage any + kind of object, eg UIImage, NSXMLDocument, etc, instead of just one specific class. + Note that this method is not called on every HJMOUser object, because if two different users + use the same managed object (same oid / url) then that managed object is only instanciated + once and its then shared between the users. See the implementation of this method in + HJManagedImageV as a referance for writting your own HJMOUser classes. + */ -(void) changeManagedObjStateFromLoadedToReady; + +/* + called when the object manager has made the managed object ready + */ -(void) managedObjReady; + +/* + called when the object manager has failed to make the managed object ready + */ -(void) managedObjFailed; @end diff --git a/HJCacheClasses/HJMOUserBase.h b/HJCacheClasses/HJMOUserBase.h old mode 100644 new mode 100755 index b62512d..781d1d4 --- a/HJCacheClasses/HJMOUserBase.h +++ b/HJCacheClasses/HJMOUserBase.h @@ -5,12 +5,16 @@ // Copyright Hunter and Johnson 2009, 2010, 2011 // HJCache may be used freely in any iOS or Mac application free or commercial. // May be redistributed as source code only if all the original files are included. -// See http://www.markj.net +// See http://www.markj.net/hjcache-iphone-image-cache/ #import #import "HJMOUser.h" #import "HJMOHandler.h" +/* + Just a simple base class for your own HJMOUser classes. For convienience only, + an HJMOUser doesn't have to extend HJMOUserBase + */ @interface HJMOUserBase : NSObject { diff --git a/HJCacheClasses/HJMOUserBase.m b/HJCacheClasses/HJMOUserBase.m old mode 100644 new mode 100755 index 93dbc1d..3cfbf6c --- a/HJCacheClasses/HJMOUserBase.m +++ b/HJCacheClasses/HJMOUserBase.m @@ -5,7 +5,7 @@ // Copyright Hunter and Johnson 2009, 2010, 2011 // HJCache may be used freely in any iOS or Mac application free or commercial. // May be redistributed as source code only if all the original files are included. -// See http://www.markj.net +// See http://www.markj.net/hjcache-iphone-image-cache/ #import "HJMOUserBase.h" diff --git a/HJCacheClasses/HJManagedImageV.h b/HJCacheClasses/HJManagedImageV.h old mode 100644 new mode 100755 index ed841f2..91643fb --- a/HJCacheClasses/HJManagedImageV.h +++ b/HJCacheClasses/HJManagedImageV.h @@ -5,13 +5,23 @@ // Copyright Hunter and Johnson 2009, 2010, 2011 // HJCache may be used freely in any iOS or Mac application free or commercial. // May be redistributed as source code only if all the original files are included. -// See http://www.markj.net +// See http://www.markj.net/hjcache-iphone-image-cache/ #import #import "HJMOUser.h" #import "HJMOHandler.h" +/* + The managed image view is a UIView subclass that can be used just like any other view, + and it contains a UIImage object thats a managed object, and hence + can be cached, shared, and asynchronously loaded by the object manager. + So you can think of it like a UIImageView + that has built in image object sharing, asynchronous loading, and caching. + If you want to use HJCache for handling images (which is what its primarily designed for) + you'll probably want to use this class or your own version of it. + */ + @class HJManagedImageV; @protocol HJManagedImageVDelegate diff --git a/HJCacheClasses/HJManagedImageV.m b/HJCacheClasses/HJManagedImageV.m old mode 100644 new mode 100755 index 5dca3bc..b354af3 --- a/HJCacheClasses/HJManagedImageV.m +++ b/HJCacheClasses/HJManagedImageV.m @@ -5,7 +5,7 @@ // Copyright Hunter and Johnson 2009, 2010, 2011 // HJCache may be used freely in any iOS or Mac application free or commercial. // May be redistributed as source code only if all the original files are included. -// See http://www.markj.net +// See http://www.markj.net/hjcache-iphone-image-cache/ #import "HJManagedImageV.h" diff --git a/HJCacheClasses/HJManagedImageVDelegate.h b/HJCacheClasses/HJManagedImageVDelegate.h old mode 100644 new mode 100755 index 60f6123..63d3b4e --- a/HJCacheClasses/HJManagedImageVDelegate.h +++ b/HJCacheClasses/HJManagedImageVDelegate.h @@ -5,7 +5,7 @@ // Copyright Hunter and Johnson 2009, 2010, 2011 // HJCache may be used freely in any iOS or Mac application free or commercial. // May be redistributed as source code only if all the original files are included. -// See http://www.markj.net +// See http://www.markj.net/hjcache-iphone-image-cache/ #import diff --git a/HJCacheClasses/HJObjManager.h b/HJCacheClasses/HJObjManager.h old mode 100644 new mode 100755 index b2cfe22..f6566f2 --- a/HJCacheClasses/HJObjManager.h +++ b/HJCacheClasses/HJObjManager.h @@ -5,7 +5,7 @@ // Copyright Hunter and Johnson 2009, 2010, 2011 // HJCache may be used freely in any iOS or Mac application free or commercial. // May be redistributed as source code only if all the original files are included. -// See http://www.markj.net +// See http://www.markj.net/hjcache-iphone-image-cache/ #import #import "HJCircularBuffer.h" @@ -15,6 +15,14 @@ #import "HJMOFileCache.h" +/* + HJObjManager is the object manager at the heart of HJCache. Normally you instanciate + one of these, assign it an HJMOFileCache, and then share it across the whole app. You can + however have as multiple HJMObjManager instances if you need more than one cache because + you are dealing with different types of cached data. + Note, HJObjManager should only be called from the main thread. + */ + @interface HJObjManager : NSObject { HJMOPolicy* policy; @@ -24,15 +32,54 @@ HJMOFileCache* fileCache; } +/* + An options file cache for this object manager. If you want a file cache, just assign + this right after instanciation. + */ +@property (nonatomic, retain) HJMOFileCache* fileCache; + +/* + Used to tweak the behavoir of this object manager. Its usually fine to just + use the default one the object manager creates for itself. + */ @property (nonatomic, retain) HJMOPolicy* policy; + +/* + Internal state. These are the HJMOHandlers that are currently actively loading. + */ @property (nonatomic, retain) HJCircularBuffer* loadingHandlers; + +/* + Internal state. This is the memory cache of managed objects + */ @property (nonatomic, retain) HJCircularBuffer* memCache; -@property (nonatomic, retain) HJMOFileCache* fileCache; + +/* + initilize the object manager with custom sizes for its internal buffer + @param loadingBufferSize how many user objects can be loading at the same time, a FIFO buffer. + If you are using managed images in a scrolling table view, loadingBufferSize should be at least + as big as the number of images on the screen at the same time. + @param memCacheSize how many user objects are cached in memory + */ -(HJObjManager*) initWithLoadingBufferSize:(int)loadingBufferSize memCacheSize:(int)memCacheSize; + -(HJObjManager*) init; + +/* + tells object manager to manage this user object, which will cause the object to + be loaded from in-memory cache, file cache, or its url. + This method should only be called from the main thread of the app. If you need to call + it from a different thread, use this: + [self.objectManager performSelectorOnMainThread:@selector(manage:) withObject:managedImage waitUntilDone:YES]; + */ -(BOOL) manage:(id)user; + +/* + called by HJMOHandler, which is internal to the object manager and HJMOUser + */ -(void) handlerFinishedDownloading:(HJMOHandler*)handler; + @end diff --git a/HJCacheClasses/HJObjManager.m b/HJCacheClasses/HJObjManager.m old mode 100644 new mode 100755 index 7a32aff..e05052e --- a/HJCacheClasses/HJObjManager.m +++ b/HJCacheClasses/HJObjManager.m @@ -5,7 +5,7 @@ // Copyright Hunter and Johnson 2009, 2010, 2011 // HJCache may be used freely in any iOS or Mac application free or commercial. // May be redistributed as source code only if all the original files are included. -// See http://www.markj.net +// See http://www.markj.net/hjcache-iphone-image-cache/ #import "HJObjManager.h" @@ -39,7 +39,13 @@ -(void) dealloc { [super dealloc]; } - +/* + tells object manager to manage this user object, which will cause the object to + be loaded from in-memory cache, file cache, or its url. + This method should only be called from the main thread of the app. If you need to call + it from a different thread, use this: + [self.objectManager performSelectorOnMainThread:@selector(manage:) withObject:managedImage waitUntilDone:YES]; + */ -(BOOL) manage:(id)user { id oid; if (! (oid=[user oid])) { diff --git a/HJCacheClasses/HJWeakMutableArray.h b/HJCacheClasses/HJWeakMutableArray.h old mode 100644 new mode 100755 index d5f5725..7637c91 --- a/HJCacheClasses/HJWeakMutableArray.h +++ b/HJCacheClasses/HJWeakMutableArray.h @@ -5,11 +5,15 @@ // Copyright Hunter and Johnson 2009, 2010, 2011 // HJCache may be used freely in any iOS or Mac application free or commercial. // May be redistributed as source code only if all the original files are included. -// See http://www.markj.net +// See http://www.markj.net/hjcache-iphone-image-cache/ #import +/* + A mutable array of weak references. Used so that we can hold 'back references' to objects + without preventing those objects from getting deallocated by normal memory management. + */ @interface HJWeakMutableArray : NSObject { NSMutableArray* array; } diff --git a/HJCacheClasses/HJWeakMutableArray.m b/HJCacheClasses/HJWeakMutableArray.m old mode 100644 new mode 100755 index 4abaa93..ce5988f --- a/HJCacheClasses/HJWeakMutableArray.m +++ b/HJCacheClasses/HJWeakMutableArray.m @@ -5,7 +5,7 @@ // Copyright Hunter and Johnson 2009, 2010, 2011 // HJCache may be used freely in any iOS or Mac application free or commercial. // May be redistributed as source code only if all the original files are included. -// See http://www.markj.net +// See http://www.markj.net/hjcache-iphone-image-cache/ #import "HJWeakMutableArray.h" diff --git a/HJCache_Prefix.pch b/HJCache_Prefix.pch old mode 100644 new mode 100755 diff --git a/Images/0.png b/Images/0.png old mode 100644 new mode 100755 diff --git a/Images/1.png b/Images/1.png old mode 100644 new mode 100755 diff --git a/Images/1.psd b/Images/1.psd old mode 100644 new mode 100755 diff --git a/Images/2.png b/Images/2.png old mode 100644 new mode 100755 diff --git a/Images/3.png b/Images/3.png old mode 100644 new mode 100755 diff --git a/Images/4.png b/Images/4.png old mode 100644 new mode 100755 diff --git a/Images/5.png b/Images/5.png old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/MainWindow.xib b/MainWindow.xib old mode 100644 new mode 100755 diff --git a/README b/README old mode 100644 new mode 100755 index 829e216..fde888c --- a/README +++ b/README @@ -4,6 +4,9 @@ and caching them. Its for iPhone / iOS, it works with data other than images too The library is designed to make it easy to make fast scrolling table views (for example) that contain imaged loaded from URLs. Eg a twitter app that shows the profile pic for each post in each table cell. +More info here: +http://www.markj.net/hjcache-iphone-image-cache/ + HJCache was developed as 'HJ Managed Object' hence the 'MO' in the class names, but we renamed it HJCache because most people who need it probably start off looking for caching libraries. diff --git a/RootViewController.xib b/RootViewController.xib old mode 100644 new mode 100755 diff --git a/main.m b/main.m old mode 100644 new mode 100755