Track alternatives and similar libraries
Based on the "Cache" category.
Alternatively, view Track alternatives based on common mentions on social networks and blogs.
-
HanekeSwift
A lightweight generic cache for iOS written in Swift with extra love for images. -
PINCache
Fast, non-deadlocking parallel object cache for iOS, tvOS and OS X -
SPTPersistentCache
Everyone tries to implement a cache at some point in their iOS app’s lifecycle, and this is ours. -
Cachyr
A small key-value data cache for iOS, macOS and tvOS, written in Swift. -
UITableView Cache
UITableView cell cache that cures scroll-lags on cell instantiating -
MGCacheManager
A delightful iOS and OS X Networking Cache Managing Class
Appwrite - The Open Source Firebase alternative introduces iOS support
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Track or a related project?
Popular Comparisons
README
Track is a thread safe cache write by Swift. Composed of DiskCache and MemoryCache which support LRU.
Features
Thread safe: Implement by
dispatch_semaphore_t lock
andDISPATCH_QUEUE_CONCURRENT
. Cache methods are thread safe and no deadlock.LRU: Implement by linkedlist, it`s fast. You can manage a cache through functions to limit size, age of entries and memory usage to eliminate least recently used object.
Support async and sync operation.
Cache implement
SequenceType
Generator
, supportsubscrip
for ... in
map
flapmap
filter
...
Use
Base use
Support Sync and Async Set, Get, RemoveObject, RemoveAll and Subscript.
let track = Cache.shareInstance
track.set(object: "object", forKey: "key")
track.object(forKey: "key")
track.removeObject(forKey: "key") { (cache, key, object) in }
track.removeAllObjects { (cache, key, object) in }
track["key"] = "object"
print(track["key"])
Other use
MemoryCache and DiskCache has feature of LRU, so they can eliminate least recently used object according countLimit
, costLimit
and ageLimit
.
let diskcache = DiskCache.shareInstance
diskcache.countLimit = 20
diskcache.costLimit = 1024 * 10
let memorycache = MemoryCache.shareInstance
memorycache.trim(toAge: 1000) { (cache, key, object) in }
memorycache.trim(toCount: 10) { (cache, key, object) in }
New features: SequenceType Generator
Cache support thread safe for ... in
map
forEache
...
let cache: Cache = Cache.shareInstance
for i in 1 ... 5 {
cache.set(object: "\(i)", forKey: "\(i)")
}
for object in cache {
print(object)
}
output: ("5", 5) ("4", 4) ("3", 3) ("2", 2) ("1", 1)
cache.forEach {
print($0)
}
output: ("1", 1) ("2", 2) ("3", 3) ("4", 4) ("5", 5)
let values = cache.map { return $0 }
print(values)
output: [("5", 5), ("4", 4), ("3", 3), ("2", 2), ("1", 1)]
Installation
CocoaPods
Support Swift 5.0
pod 'Track', :git => 'https://github.com/maquannene/Track.git', :branch => 'master'
Manually
- Download and drop
/Track
folder in your project. - Congratulations!
Thanks
Thanks YYCache,PINCache very much. Some ideas from them.
License
Track is released under the MIT license.
如果来自天朝点击查看更多实现细节文章
*Note that all licence references and agreements mentioned in the Track README section above
are relevant to that project's source code only.