Notes from Bordertown Labs with posts regarding software development for the iPhone, Ruby on Rails, tips and code.
» Contact with inquiries.
Visualize your geodata in augmented reality with 3DAR by Spot Metrix. |
Among other things I find his logging tips helpful.
If you use synthesized properties, the method implementations generated by the compiler depend on the specification you supply. The declaration attributes that affect performance and threading are retain, assign, copy, and nonatomic. The first three of these affect only the implementation of the assignment part of the set method, as illustrated below (the implementation may not be exactly as shown):
// assign
property = newValue;
// retain
if (property != newValue) {
[property release];
property = [newValue retain];
}
// copy
if (property != newValue) {
[property release];
property = [newValue copy];
}
For almost every app we’ve made, I find myself writing “model classes” to store structured data and logic.
This all started when André Pang wrote an amazing model base class called RMModelObject a few years back that is incredibly sophisticated and provides these same great features on the legacy ObjC runtime. RMModelObject was the inspiration for my class, which was much easier to write since ObjC 2.0 does all the heavy lifting.
The iPhone Human Interface Guidelines has a nice listing of icon and image sizes in an iOS app.
You can register an iPhone app as file type recipient. Chad is using this in Simply Done.
See Apple’s Uniform Type Identifier reference for more info.
Everybody needs to win
It’s not enough to force yourself to stop overdirecting your team members. If you’ve been doing it, there’s a reason and you need to get to the bottom of it. They’ll feel better if you back off, but if you’ve been experiencing doubts about project progress or about specific team members or (frankly) the quality of your plan or direction, then backing off won’t fix what’s wrong. You need to feel solid about your collective effort. If your tendency to micromanage is about the work or specific team members, by all means, stop micromanaging, but find some way to address the real problem. If the project feels wrong, take some time to deeply assess the work performed thus far. If the micromanaging is about a team member, review that individual’s progress and resolve to discuss it with the person. And if you have doubts about the job you’re doing, seek out a peer manager whose opinion you trust and express your doubts. Whatever the problem, face it and deal with it, and your impulse to overdirect will be replaced by a real sense of progress. Get squared away with your team, but handle your own side of things as well. (via Are you unintentionally micromanaging your team?)
On rubyforge.org
git checkout -t origin/YOUR_BRANCH_NAME
* http://www.balsamiq.com/products/mockups/desktop
* http://www.evolus.vn/Pencil/Home.html
* http://www.axure.com/
* http://www.mockupscreens.com/
* http://www.irise.com
* http://www.foreui.com
* http://www.carettasoftware.com
* http://www.mockflow.com
* http://mockupscreens.com
* http://wireframesketcher.com/
* http://www.flairbuilder.com/
* http://www.designervista.com/
* http://dub.washington.edu:2007/denim/
* http://www.extremeplanner.com/easyprototype/
* http://napkinlaf.sourceforge.net/
* http://www.elegancetech.com/
* http://www.smartdraw.com/examples/gui/
* http://www.serena.com/products/prototype-composer/index.html
* http://www.simulify.com/
via Muhammad Owais Nadiadwala
(Source: linkedin.com)
In normal conditions (*), in iPhone OS 4.0, when Home is pressed, your app will go to the background but will NOT be kept running. It’ll be suspended, then resumed whenever the user gets back to it (whether via the Home screen, a URL being opened, or the new task switcher).
(*) Normal conditions are:
* You’re on iPhone 3GS or iPod touch 3rd gen or (presumably, but not Apple-announced) iPad when 4.x for it hits the scene this Sept.
* Your app is linked against (read: the Base SDK setting is) 4.0 or later.
* You haven’t opted out of backgrounding by adding the UIApplicationExitsOnSuspend key to Info.plist and setting it to boolean YES.
* You haven’t requested any particular background service. (See below.)