Friday, August 31, 2012
NSMutableArray Weak References
I had the need to store non-retained objects to prevent a retain lock loop. I found a couple of different ways to do this. I started by trying to implement a derived version of NSMutableArray. There is a nice example by Mike Ash on how to do implement a NSMutableArray. It would be fairly easy to modify his example to remove the retain/release pieces. However, I was a bit nervous when it came to testing the code and my changes. While he has a test in place, the test wouldn't work if the objects weren't retained.
So I kept looking and found a great example on Stack Overflow by Mark Powell that takes advantage of Core Foundation's Mutable array.
I haven't done much with Core Foundation services, but I have to say that it's amazing how easy this was to do. I modified the example above to work with ARC so there is a __bridge cast for the returned CGArrayCreateMutable. I put this along with my changes in a small class and header file which can be downloaded at Download NSArrayWeakReference Source.
I hope you found this helpful.