Aleksandar • Vacić

iOS bits and pieces

UITextField.text is not always there

If you have UITextField on the page and you need to validate is there something in it (so if yes you can save the input or something), you might do something like this:

if (![addNewCellTextField.text isEqualToString:@""]) {


However, this will fail if the field is never touched. That is, until your user taps the field and it gets focus, UITextField.text is nil. Which means that condition above yields true, which is not what you want.

Once it is touched though, this becomes an instance of NSString with value of @“”. Thus, always use:

if (addNewCellTextField.text != nil && ![addNewCellTextField.text isEqualToString:@""]) {


Watch out for this little trap hole.

iTunes 9 on Windows 2003 - the complete solution

Some of the stuff here also apply to problems appearing during installation or use of iTunes 9 on Windows XP, Vista or Windows 2008. Meaning - do try them, it might help you solve the issues you’re having.

What does this solve?

If you have any of these issue, this article will most likely help you.

  1. You use Windows 2003 and iTunesSetup.exe refuses to run on it (it’s touting only XP or Vista/Windows 7 as supported OSes).

  2. At the end of the iTunes install, when dialog says “Starting services” it failes to start iPodService.exe with the following message: “Service ‘iPodService’ (iPodService) failed to start. Verify that you have sufficient privileges to start system service.”

  3. You have trouble starting iTunes.exe after install.

  4. You see dialog boxes telling iTunesHelper.exe failed to start.

My wife uses Windows 2003 as development machine and I had all of these happening.

iTunes refuses to install due to OS mismatch

Apple is – like many other companies do in the last year or two – touting iTunes 9 as compatible only with Windows XP and Vista or Windows 7. This is safe net for them. If you run Windows 2003, this is just about the same thing as XP, regarding ordinary software.

Thus, solution here is to kill the OS-based launch conditions, which good people at WebKeyDesign have already explained how to do. The solution goes like this:

  1. Unpack iTunesSetup.exe so you have all the various .msi files inside it copied to some folder. Use Winzip, Total Commander or any other de-archiver to open iTunesSetup.exe and extract the files

  2. Download free tool called InstED and start it

  3. Drag all .msi files into InstED

  4. For each of them, find the LaunchCondition key in the left panel and then in the right-panel look for ((VersionNT=501 And ServicePackLevel>=2) OR VersionNT>501) and delete it. Then save the file.

InstEd - removing launch conditions

QuickTime has two conditions, remove both

Once you’re done with all of them, install them, one by one. Start with AppleApplicationSupport, then AppleMobileDeviceSupport and then continue until iTunes as the last. Ignore SetupAdmin.exe

iPodService.exe failed to start

At the end of iTunes installation, it will try to start iPodService.exe. This fails and manifests in a variety of ways. There’s an amazing number of “solutions” on the net, but remarkably none has pinpointed the actual cause.

It’s Data Execution Prevention feature of the Windows – it will kill the process as soon as it tries to run. DEP is made to prevent malicious software using private or undocumented API or doing any sort of suspected malicious activity. iPodService.exe falls into this trap according to DEP, so we need to tell DEP to let it go as exception to the rule.

Here’s how:

  1. Right-click My computer, choose Properties

  2. Go to Advanced tab, click on Settings under Performance, then onto the DEP ta``` objective-c

  3. Click Add, go to Program Files\iPod\bin and choose iPodService.exe

  4. Retry/continue the iTunes installation and it will finish it up very quickly.

Data Execution Prevention is what kills iPodService.exe

iTunes.exe or iTunesHelper.exe don’t start

You click, they appear to start but then fail. The reason is the same as above: DEP. Add both .exe files (they are in Program Files\iTunes folder) to the DEP exception window and they will start just fine afterwards.

To expand this a bit – every time you have a known, valid software failing to start, always add them to DEP and see if they work. Most likely they would.

Q: Would you like to move or copy? A: Yes / No?

Hmm...say again?

This is in Windows Explorer, copying/moving files across networked disks.

Given my experience so far in big software projects, this kind of bad UI is direct consequence of the background API being done before front-end people had any say. At the moment when front-end work came to play, there was probably no info to determine is the current operation a copy or move, so they did what they could. Or it could be sloppy FE work, but I somehow believe it’s the former.

How to find crash logs for iPhone applications on Mac, Vista and XP

Please note: this is a personal website, NOT a support resource for various large games and app companies that send their customers here. Use this page to find the crash logs but then contact them, not me.


iTunesConnect service – a web site that iPhone developers use to manage their published applications – has a separate area that will list all the synced crash reports from the application users.

However, not all of the crashes appear there, or are slow to appear. Thus, if you have a desperate problem with someone’s application, it’s a good idea to pick these up and send them to a developer.

Here’s how, in three major operations systems: Mac OS X, Windows Vista / Windows 7 and for Windows XP.

iTunes sync

Application crash logs are transfered to your computer each time you do a sync with the device, in the iTunes. Thus, first step is to sync with iTunes:

Sync the iPhone or iPod Touch through iTunes

Mac OS X

On the Mac, crash logs are kept at:


where ~ is your Home folder. Here’s an example:

Crash logs on the Mac OS X. Device name is "iPhone AV" here

There’s the .crash file and .plist file - archive them both and send to a developer. Actually, pick all the files you find there that have the name of the problematic application.

Windows Vista / Windows 7

Files are located here:

C:\Users\<USERNAME>\AppData\Roaming\Apple computer\Logs\CrashReporter/MobileDevice/<DEVICE_NAME>

AppData folder is hidden by default, so here’s how to access it. Get into your personal folder:

User folder, with Vista folder path

Now click on the folder (address) bar which will change the display into Windows folder path and add \AppData to it, then click Enter.

When clicked, the address bar changes into regular Windows folder path

This will then show the folder contents. From here, you can follow the path above until you get to the crash logs.

For Windows 7, follow the same procedure.

Windows XP

Location is here:

C:\Documents and Settings\<USERNAME>\Application Data\Apple computer\Logs\CrashReporter/<DEVICE_NAME>

is your login username. Application Data folder is usually hidden by default, so you need to reveal it in the same way as in Vista – by typing in and pressing Enter.

And that’s it. Easy :) - rest is for developer to sweat it.