BuySellAds.com

Until Dec 3rd, 44% off all Manning books, including Barcodes with iOS! Promo code: mobicftw
Our DNA is written in Objective-C
Jump

UIView Background Queue Debugging

Over the the past few days we’ve been chasing an elusive bug that was testing the limits of our sanity. We repeated the following conversation about 3 times:

“Hey, we did some changes. The jumping views should not occur any more. We didn’t see it even after 2 hours of testing”
“I’m still getting it, right after launching the app.”
“&”§%, $%&% &!”

I would bet that this happened to you to, especially when working with background queues for updating some data and then updating UI to reflect the new information.

Similar to “did you reboot your PC?” being the standard answer to 99% of Windows problems, we iOS developers found that “are you maybe calling UIView methods on a background thread?” solves the Lion-share of problems with views. Here’s a convenient way how you can quickly find these elusive issues too.

Read more

Cocoanetics Design Update

The theme I’m using on Cocoanetics.com has gone to version 1.6.6 which is to say that over the past 2 years our designer has done an awesome job to polish the look. I think it is about time that I give a shout-out to Jeremiah Tolbert from Clockpunk Studios who is in charge of this all.

Read more

Xcode 4.6 Libtool Issues

The updated linker and libtool that come with Xcode 4.6 apparently contain some changes that are causing problem when building projects that link and depend on static libraries. One appears to be a bug, the other is an annoyance. Fortunately we found workarounds for both.

Update: Not a bug after all. Rather a “learning experience”. Details below.

Read more

Removed Affiliates

For a long time I had links to Sensible Cocoa, BinPress, Dropbox and Mobfox in the footer of every page on Cocoanetics.com. I also had two entries for other people’s components in my parts store section that linked to another company’s store via affiliate links.

I had established the links because I was hoping to earn a bit of passive income from these links, with the exception of Dropbox where I wanted just wanted to increase my free storage. This was the only successful part, I raised my storage to just under 25 GB over the past year.

Read more

72.009 DPI

When creating image files via CGImageDestination if found something weird. I’m setting the DPIHeight and DPIWidth fields in the meta info to 72. When outputting as PNG format there are some programs that will show the image resolution as 72.009 DPI, whereas TIFF and JPEG for example would display as 72.

Turns out that this is neither a problem of CGImageDestination, libpng nor any specific viewer app. The problem is in the PNG specification.

Read more

3 Mac Tidbits

Here are three small pieces that I discovered while working on my second major Mac app. It’s for internal use by a client, so I cannot tell you about it, but it is a great place for me to learn more about the various oddities you find when developing for the Mac platform.

Read more

Radar: Interface Builder’s First Responder is missing some Editing Actions

I noticed the bug when I re-added an Edit menu to a Mac app that I had earlier removed. Turns out that all your NSTextFields lose their ability to cut/copy/paste and undo if you don’t have corresponding menu items.

So after I copied the menu over for another app I found that I couldn’t find the redo: action to connect to the Redo menu item. Filed as Radar rdar://13113666 and cross-posted on Open Radar.

Read more

Unit-Testing CoreData Migrations

If you use CoreData then you will probably face the problem of database migration sooner or later. Automatic migration is turned on easily, but how can you be reasonably sure that your fresh app update will still be able to open databases using the old schema? Like when people were using the app and are now installing your update that needs more entities.

We were beginning to face this scenario in multiple apps, so we started unit testing CoreData automatic migrations like I’m going to show in this article.

Read more

Radar: Horizontal Line Autolayout and Layer-Backing

There are apparently a great many views on Mac that don’t behave properly if you enable layer-backing. I recently reported a bug in drawing NSTextField backgrounds together with layer-backing, now here is a bug I found in NSBox.

Filed as rdar://13059657

Read more

DTCoreText 1.2.0

Funny Story: right after I published my findings on how to work CocoaPods I received a couple of pull requests. Should it be actually be the case that fellow developers are beginning to take notice of DTCoreText?

I admit, that for the first few tags/versions of DTCoreText I didn’t take CocoaPods seriously. But since I got down how to work with sub-modules and sub-specs I find that it gives me a great deal of pleasure to keep my specs current.

Read more