I haven’t talked about what my app will be yet. And I have been very shy on detailing my progress. Even though it’s the main purpose of this blog, it often felt worthless… I don’t write as much as I would want to, so when I do, I talk about things that seem more useful.
Today I came accross an issue. Actually I have been having this issue for a few days, but until today, I could avoid it. So I did.
I tried to debug as much as I could, checking the debug navigator, outputting everything that seemed relevant to the console, trying to analyse the call stack so I could figure out what the app was trying to accomplish… Because of course, the error I got was EXC_BAD_ACCESS code = 1. Which means: you have a memory error, now find it.
Where do I go to? Being an indie developer, I can’t turn to a collegue. I don’t do code review. An old collegue of mine use to help me out via screen sharing, but he’s charging me… I finally turned to my best friend stackoverflow.com. I asked my question, trying to be as detailed as possible. But I am always shy to ask a question there! I am always afraid I will look stupid, too new to do anything useful, or just helpless! I am always glad someone asked the same question I have before me so I can just read the answer and be happy!
I create custom views on one of my UIViewController. These views have two labels that I set with specific values; one int and one string. In the first iteration of the UIView class, the int (called number) was an actual int. So the property was declared:
@property (assign, nonatomic) int number;
Later on, I changed number to be an NSNumber, but didn’t change the property declaration. It caused a memory error when the view was accessing _number to set the label properly. Changing the property to:
@property (strong, nonatomic) NSNumber *number;
fixed my issue.
Back to coding!
I will now jump into the “free world” and talk about iTunesU. With more than 350,000 files, hundreds of millions of downloads, and available in all countries where iTunes is available (except in Romania), iTunesU deserves more press. Apple is putting a lot of efforts into education, and I love it. I have started my online studying with an iPhone programming class from Stanford, and this platform remains my favorite one.
The way of delivering content has changed significantly over the years: it basically started as a glorified podcast. Filters on both ends make sure not everyone can publish, hence assuring some quality in the content (although really not consistent), but also can allow institutions to restrict access to their content. Universities can take advantage of the platform as an academic tool for their students.
As of this writing, iTunesU is available as a universal app for iOS device. You can also access content from iTunes on your desktop machine.
What’s great about the iOS app is that courses are organized either in a chronological way or by content. You can check what you’ve seen so far, so you have a good overview of your progress. The catalog is easily accessible via the library, the same way you access the music store from the iPod app. You can also download content in advance, which is a huge plus for me (it was my biggest critic of lynda.com).
In the same breath, I will also say that this “download” feature in iTunesU drives me insane. Let’s say you follow a course that’s already complete, so all the material is available for you to download. You are home, with a high-speed connection and a decent bandwidth, so you decide to download 4-5 lectures. Days go by, you listen to the first 2 lectures and you really enjoy it. Then you take the subway, open iTunesU to realize that all the content you’ve downloaded vanished into thin air. Gone. Even the lecture you are in the middle of.
You use to be able to keep the videos you had already downloaded before, but not anymore. Downloads have an expiration date.
Other than this, which may be a detail for you, if you are always in range of a high-speed connection, the service as a whole is awesome.
Right now, I am enjoying Jerry Cain’s Programming Paradigms course from Stanford. He explains the basics so well and so thoroughly, it is worth it to revisit them. Paul Hegarty’s Coding Together: Developing Apps For iPhone And iPad is also great (I followed this same course but from previous semester). M. Hegarty knows the iOS SDK inside and out, and explains them clearly. Note that these are from Stanford University: they really have the best selection in computer science (at least in my experience). The quality of the course is very good, but also the quality of the material (videos and slides), which also makes a big difference. Be careful for audio-only content: only having the voice of a recorded class that you did not attend is not that helpful. I’ve seen some in my research for this post.