Thing #244 I don’t like about Xcode:
Because the structure of your project is abstracted from the on-disc project structure, I always end up with tidy projects and messy project directories.
Sailing on the Objective-C sea, see?
Written by Cory, from Davander Mobile.
@davandermobile on twitter, or email me objectivesea@davander.com
I spent quite a bit of time googling this, but couldn’t find a definitive answer. Basically, how do you detect and respond to being popped off a UINavigationController’s stack. viewWillDisappear: and viewDidDisappear: both get called when you’re pushing another view controller on to the stack… which is not what I want.
I found lots of misdirection involving UINavigationControllerDelegate, and UINavigationBarDelegate, and I almost subclassed UINavigationController. So far I think this is a better way than any of those. It’s simple and seems reliable.
-(void)viewWillDisappear:(BOOL)animated {
NSUInteger ind = [[self.navigationController viewControllers] indexOfObject:self];
if (ind == NSNotFound) {
// do something, we're coming off the stack.
}
}
Do this:
- (id)someObject:(DMSomeObject *)caller didSelectView:(DMObjectView *)view {
if (caller != self.keyObject) return nil;
***<LONG METHOD REACTING TO A SELECTED VIEW, RETURNING AN OBJECT***
}
Don’t do this:
- (id)someObject:(DMSomeObject *)caller didSelectView:(DMObjectView *)view {
if (caller == self.keyObject) {
***LONG METHOD REACTING TO A SELECTED VIEW, RETURNING AN OBJECT****
}
return nil;
}
Deeply nested if statements, coupled with blocks based apis or enumeration loops will have you lost in your own code. When possible, fail early for simpler code.
This is amazingly useful.
Just a little follow up regarding my post from Dec. 9th regarding the spammy behaviour of one App Store developer App Store Spam - 28 identical apps.
It looks like he’s trimmed his armada of white noise apps from ~28 down to 8. I have no idea if this was voluntarily, or if he was forced to remove them by Apple.
I haven’t contacted the developer directly because I’m not a damn journalist. In this context I’m just an annoyed App Store user trying to find a good white noise app.
On that note, I still haven’t found a good one for iOS. I was contacted by the developer of Shleepy. He says he made his app free because he wasn’t making any money off of it anyway.
Shleepy is great, but it only has customizable white noise. I prefer something with rain / ocean sounds as well. On the mac I’ve been using Chill Lite and it’s been working wonderfully so far. I expect I’ll upgrade to the pay version soon.
The way iTunes handles podcasts has been dead to me for some time now.
New Smart Playlist… -> ☒ Match all of the following rules: -> Media Kind is Podcast -> Plays is 0 -> ☒ Live Updating
Problem approximately solved.
"Hi, I have an app that I feel is pretty good, but has a shit name (Saline). I’ve been thinking about re-releasing under a new, more search friendly name. Would you consider that spam too? I agree this George dude is over the line though."
I absolutely don’t think that would be spamming the App Store. Even if you keep the old one in for a bit to do a little A/B testing. As long as you drop one after a bit, or differentiate the two apps in some meaningful way (i.e. functionality).
Personally I would just submit an update that re-brands my app, rather than put a new app in the store.
I don’t hate marketing, I just know that marketing means you walk a fine line between promoting a product and gumming the world up with spam.
In August, iOS developer George Talusan put 22 identical copies of the same app in the App Store. That’s 22 times, under 22 different names.

When I discovered this, a few months ago, I reported it to Apple immediately. Since then, he has put the same app in another 6 times, with a slightly modified UI. Apple does not seem to have responded.
I stumbled on this honeypot of apps while looking for a white noise generator during a bout of insomnia. The screenshot looked attractive and it was free, so I downloaded it. I’ve tried a few other noise generator apps, and this one was definitely not a good one. The sounds were alright, but it stopped playing sound the moment my phone went to sleep. Most other noise generators will continue playing. That said, even if this app was god’s gift to iPhones, it wouldn’t excuse the 28 copies spamming the App store and Clogging up your search results.

(Three variations on the one UI, depending on when this duplicate was last updated)
Some of the copies of the app are free, and some of them are $0.99 or $1.99. They all seem to have an in-app purchase to unlock the full feature set.
He’s since fixed the issue of background audio in some, but not all, of the duplicates. I’m sure it’s hard work keeping 28 apps up to date.
It’s in the store under the names Virtual Earplugs, Ambient Soundscapes, Power Nap - Soundscapes, iEarplugs, Noise Block, Brain Tuner - Focus, Nap+, iRelax - Soundscapes, Napbot, Meditator, Mood Tweak, Toga Sound, Dreambot, Babywaves, Hushbaby, iDream -Sleep Maker, iPacifier, SleepAid - Soundscapes, Mood Mod, Tuneout - Sound Blocker, Soundwaves, and Focus+. In December he added Soundscaper, Soundscaper Pro, Sound Oasis, Sound Oasis Pro, Sleep Maker and Sleep Maker Pro.
These apps are listed in the categories: Utilities, Productivity, Travel, Business, Medical, Lifestyle, Heathcare & Fitness, and Education.
This is a pretty big failure in the app approval process, and I’d be willing to bet it’s not an isolated incident. Each of these has been looked at by a real human being, who no doubt had access to their account history. It doesn’t take a genius to spot that these apps are all IDENTICAL. From what I can see without buying them all the only thing that varies between them is the icon, the name, and the app description. Either they have no directive to stop stuff like this from happening, or they have no system in place to catch it.
I’d love to hear about other examples of this kind of App Store SEO/spam.
cd ~/Downloads/calcurse-2.9.2../configure CFLAGS="-fnested-functions"makesudo make installEdit: after playing with calcurse for a brief period of time, I’ve moved on to wyrd which seems like a better system.
It’s based on a unix app called remind. The only thing that bugs me is that downloading and installing remind is hampered by the developers staunch anti-Apple position.
Edit 2: HOWTO disable the launch delay in remind, when running on closed systems like Apple and Windows. You have to build from source, which is fairly easy (./configure, make, make install, for the most part). You’ll need to comment out the line of code in remind-03.01.10/src/init.c line 143 and 145 before compiling.