This bug has been causing me grief for the last month or so, as it was hard to pin down without a concrete use case that can reliably reproduce it. GitHub user brovador finally was able to narrow it down to be able to repro it every time.
There appears to be a bug in NSAttributedString that causes an EXC_BAD_ACCESS if you try to enumerate certain attributes over a longer range on two separate attributed strings from two background threads.
Code Coverage is described on Wikipedia as:
… a measure used to describe the degree to which the source code of a program is tested by a particular test suite. A program with high code coverage has been more thoroughly tested and has a lower chance of containing software bugs than a program with low code coverage.
Less bugs? Yes, please!
When implementing iOS 7 support for a client’s app I got a result that might stump even seasoned Cocoa programmers.
On iOS 7 views generally go behind translucent bars. To still get your views aligned correctly – when creating them in code – you have to get the responsible view controller’s top and bottom layout guides.
Those get set sometime before viewWillLayoutSubviews and I found it useful to add a viewInset property to the view controller’s base view. Setting this would setNeedsLayout and then you can rearrange the subviews according to the new insets in layoutSubviews.
The following issue is a head scratcher if you are trying to add unit tests to your project that both run on Mac and iOS. And if you like to use the new inline buttons for executing individual tests.
All the while during the iOS 7 BETA phase I’ve been filing Radars and produced samples to go with them to demonstrate the issue to Apple engineers. I wasn’t allowed to blog about these until the general release of iOS 7 and so I kept collecting them in a special folder on my dropbox.
Now that iOS 7 is out I am able to add the samples to my public Radar Samples repo on GitHub. I hope that they can be a good example of how to create samples that allow Apple engineers to quickly reproduce and debug those issues.