Is there a reason that you're not just passing a TextureCache to the textureCache property of some ImageLoaders and letting them manage the cache on their own? That should be much easier than manually retaining and releasing textures.
would be nice if it returned the texture when you added it if it also retains by default
I don't understand how returning the texture is related to retaining by default. Regardless, you already have a reference to the texture, so returning it doesn't really make much sense to me.
I've set max unretained textures to 100, so I guess my question is, does it dispose() of textures when it ends up with a bunch unretained?
The TextureCache will dispose unretained textures when there are more than the limit. In your case, if there are more than 100 unretained textures, then it will dispose as many as needed to get it back down to 100. Retained textures do not count toward the limit, since they cannot be disposed, so the cache may actually hold more than 100 total textures.
If so, why might I be running into this issue still?
My initial question makes me wonder if you're passing the TextureCache to some ImageLoaders, but you are also trying to retain and release manually. You shouldn't need to do that. The ImageLoaders know how to work with the cache on their own.
The only other thing that I can think of is that you might not be disposing the TextureCache when you dispose the List. If you're creating a new TextureCache every time that the List is created, but not disposing the old one, you're going to have a memory leak. This would only apply if you're showing the List multiple times, though. I'm not sure if that's the case.
Basically, most developers will only need to do two things with a TextureCache.
1) Create it and pass it to some ImageLoaders.
2) Dispose it when the list is disposed.
The retain and release stuff gets handled automatically by the ImageLoaders.