But for sure, using static libraries is ok, there is even an XCode template for this. People said that they published apps to the Apple AppStore that use frameworks with static libraries, and that they did get approved without problems.
There are some approaches out there for creating frameworks for iOS (1, 2, 3, 4), but this one is the simplest and works very well: ios-static-framework.
Much more background can be found in this and this great posts.
So, go and create frameworks that work on multiple architectures using static libraries and bundle resources, and make it easy for 3rd parties to add functionality to their projects
I earlier wrote a post pointing to a blog post about documenting Objective-C code using Doxygen and Xcode. While this works quite well, there is a much simpler approach which produces documentation looking similar to Apple’s own iOS documentation: Using AppleDoc.
This post shows you how to set up AppleDoc, and how to integrate with the build process to keep your documentation up-to-date: Documenting you code in Xcode 4
This still works with XCode 4.3.1 without any problems.
The generated documentation is automatically pushed to XCode and available beside all other documentation in the Organizer.
Funny Google Analytics advertisement about how the usual online checkout experience would feel in real life. Yes, it’s an ad, but it’s cool, and – well, that’s what viral marketing is about, eh? Making ads so cool that people love watching and distributing them
If you got a timestamp, e.g. from an SQL database entry, and you need a NSString on iOS that tells you how many seconds, minutes, hours, etc. ago this event happened (to display to the user), NSDateComponents is your friend.
Here is a small utility method that illustrates the conversion:
Basically, there are three different ways to implement a communication between view controllers in iOS:
If the view controllers are closely related to each other, you can give them instance variables that point to each other. This is the easiest way to send messages between view controllers, but it’s the least adaptable. You should avoid this.
You can create a delegate protocol that specifies the messages that one view controller can send to the others. Other view controllers can then adopt to this protocol. Your view controller does not need to know to which type of view controllers it sends the message, only that they conform to the protocol.
If there is no relation between the view controllers, the notification system can be used. It also makes sense if multiple view controllers are interested in the messages of one view controller. Posts can go to NSNotificationCenter, where interested view controllers have registered for that notification.
I always talked about view controllers here, but the same is true for other objects, e.g. views.
For all you Airport Express and Airplay users out there: If you want to attach speakers to your Airport Express directly, active speakers are the solution. Obviously, all those computer speaker systems could be used (from Logitech etc.).
However, there is an interesting alternative: Use studio monitor speakers. You will get crystal clear sound and a lot of power. The idea of studio monitors is that they reproduce the sound as natural/unmodified as possible. The cheapest, but very good choice could be: Behringer 3030A or 3031A. You can get them e.g. here and here. Both shops offer 30 day money back if you are not satisfied. The difference between 3030A and 3031A is the size, and with it comes the deepest frequency that the speaker can reproduce, and also the maximum sound level. I would recommend the 3030A. With this size you could still put them on your desk to compose music with Ableton Live, and the kick bass rocks. If they don’t go deep enough for you, you can combine with a subwoofer. Or exchange with 3031A, because you have this 30 days money back guarantee. With the 3031A, you can easily give parties in bigger rooms.
There are also “more professional” studio monitors available, e.g. M-Audio BX5 / BX8 or KRK Rokit RP5 / RP8, but they cost much more, and I can tell you that Behringer sound fantastic.
I highly recommend reading the book Business Model Generation. Not only that the design of the book is really refreshing and makes it fun to read, but it also just focusses on main facts that you need to describe your business model and illustrates them well.
What I like especially is that it formalizes Multi-Sided Platforms, a business model pattern that is used in many Internet mobile businesses today: Two or more distinct but independent groups of customers are brought together, and such platforms are of value to one group of customers only if the other groups of customers are also present. The platform creates value by facilitating interactions between different groups. A multi-sided platform grows in value to the extent that it attracts more users, also known as network effect. Economists call this platform multi-sided markets.
A very prominent example for a multi-sided platform is Google’s business model: It’s value proposition is to provide extremely targeted text advertising over the Web (AdWords), extending the reach further through AdSense through which ads are displayed on other, non-Google Web sites. Customers are Web surfers, advertisers and content creators: Three independent groups of customers, but value is brought to one through presence of the others. Three value propositions exist respectively: Free search, targeted ads, and monetizing of content.
Another example for multi-sided platforms are the video games consoles Wii and Xbox. Both are double-sided platforms. While Wii addresses casual gamers (“family” console) and game developers, Xbox addresses hardcore gamers and game developers. But the business models are substantially different: Wii’s consoles are relatively inexpensive, and customers are attracted through the novel motion-controlled “fun factor”, while Xbox machines are sold with loss because of the expensive hardware. With the Wii, Nintendo earns money from both – console gamers which buy the hardware and game developers through royalties – while Microsoft only from game developers. Additionally, both produce and sell games on their own.
The Business Model Canvas, which is the main focus of the book Business Model Generation, provides a shared language for describing, visualizing, assessing, and changing business models. Together with the described multi-sided platform pattern, this book gives you a powerful tool to construct and visualize your business model of your mobile service business idea in a fresh and easy-to-explain way.
If you want to add a gradient to a UIView with transparency, so that you can e.g. put it on top of a UIImageView as container for some text, and you can rely on iOS 3.0+ being available, you might use a layer for this.