These are my children. They join me on all my journeys.
So I use a lot of small utility classes that just jump between projects. Not enough to warrant a library, but still code I can’t live without. For example, ary(id first, …) instead of [NSArray arrayWithObjects:…], dict(id key, id value, …) for a dictionary, sf(NSString *format, …) instead of [NSString stringWithFormat:…], a zooming and delta-scrollable CALayer, vector class with most linear algebra, line class, simple macros to turn of CoreAnimation animations… You get the point.
Anyways, from my last blog entry you might have gathered that NSOperationQueue, CoreAnimation and garbage collection don’t really work well together. It seems to be a problem with ensuring that only a single is committing changes/transactions at a time (hence a crash in CALayerEnsureTransaction). NSOperationQueue sets up a full thread with a run loop for every single operation. I have no idea why they chose this wasteful approach; personally, I’d reuse a set of threads. And since NSOperationQueue isn’t working, and my entire acoustic modeling simulation is built around NSOperations, I decided to do just that. Thus, FakeOperationQueue joins my army of utility classes. It has the exact same interface as NSOperationQueue (almost, I only covered what I use), and works on NSOperations. Note that it doesn’t consider dependencies! It’s a very simple class, only a hundred lines of code.
Rentzsch seemed somewhat interested in my fake queue. Thus, I decided I might as well put my stuff online.
- FakeOperationQueue.m FakeOperationQueue.h
- NCCommon.m NCCommon.h – ary, sf, dict; foreact macro stolen from somewhere; probably more
- BNZVector.m BNZVector.h (I was planning to join a contest for BNZ but I enver got around to it, hence the prefix)
- BNZLine.m BNZLine.h BNZLineTest.m
- CALayerAdditions.m CALayerAdditions.h
- CAScrollDeltaLayer.m CAScrollDeltaLayer.h – Sort of embarrasing code, I’m probably mixing some spaces up, but it’s very handy when scrolling from -[NSResponder mouseDragged] with mouse deltas