Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

iOS

Are you supposed to remember everything?

Hi there! So I've been confused on if I'm supposed to memorize everything from the lectures. When I look back at it a day later, and I take physical notes and copy the code on the computer, I seem to forget stuff even doing the "extra credit." I have a feeling it will help a ton when building my own app, but I was hoping that I'm not the only one because I feel like an idiot right now haha. Thanks, Eliot

4 Answers

Mike Baxter
Mike Baxter
4,442 Points

For iOS development in Xcode, I try to avoid memorizing method names. Why? Because of auto-complete, but not in the way you'd think. Sure, auto-complete is handy. But it's actually really stinkin annoying to type out a whole method name with auto-complete enabled, because auto-complete hides any typos you make until the very end. More often than not I wind up with one missed capitalization and I have to go back and retype the thing. So even if I did have every method selector memorized perfectly, I probably wouldn't use that memory because of how auto-complete behaves. This might come back to bite me in a coding interview some day if they ask me to write stuff on a whiteboard, but meh...

Things you should try to remember are big paradigms. (i.e., How do you load a UIViewController with a XIB for its view? How do blocks work?). I've found that for myself, one of the best ways to gain momentum, confidence, and knowledge is to write out questions for myself in Evernote. I put a little checkmark next to each question (just like a bullet point). As I'm learning, I make questions for myself, particularly if I come across something I think I might forget later. But I'm actually surprised how much I remember. However, I wouldn't know that I remembered those things if it hadn't been for the questions. When you're learning a high volume of stuff, it's sometimes easy to forget where you've been. Writing and reviewing questions is the best way I've come across. (Fortunately Team Treehouse already has a question/review process built in, but I do most of my iOS learning from a book.)

Also, as you suspected, once you start building something on you're own, you'll find you learn it better. Hope that helps somewhat!

You've brought up some interesting points, I even forgot how blocks work so I have some reviewing to do. Thanks! And what you mean "How do you load a UIViewController with a XIB for its view?" What is an XIB?

Mike Baxter
Mike Baxter
4,442 Points

Sure!

A XIB is an XML Interface Builder file, the kind you make when you're doing a storyboard or when you make a UIViewController with a XIB file attached. It's basically just an XML file that describes a UIView, and you create it by dragging things onto a view in Interface Builder in Xcode.

By default, a UIViewController will try to find and load a NIB (which is a basically a compiled version of a XIB) with its shared name when you call [[UIViewController alloc] init]. This is a graphical way to make an interface, since you do it through Interface Builder, and your code interacts with that interface you made.

But if you want to build a view programmatically, you have to override the default of "loadView" in your UIViewController's code, like this:

-(void)loadView {

    UIView *backingView = [[UIView *alloc] init];

    self.view = backingView;
}

This is because the default of "loadView" tries to locate the NIB (well, basically XIB) file you made. When you override it, it no longer tries to load an Interface Builder view.

Hope that makes sense!

geoffrey
geoffrey
28,736 Points

I don't follow the IOS track, but PHP. As a rookie, I try to write as much as I can in an organized text file. In this case in my mother language as I don't speak english fluently. At least, more or less. That means I almost can create the project using my own notes, without looking at Treehouse's videos. But honestly, that's really time consuming sometimes.

I honestly think you can't memorize everything at once, so I from time to time watch again some videos or read my notes. The matter is you understand and in case you don't remember how to do something, use google or some ressources where you know you are going to find the information as exemple Treehouse.

We are all in the same boat, I also feel like an idiot because of that, but we shouldn't be harsh with ourselves. We make the effort to learn ! That's the matter :)

Same here - I am a real slow learner. But I think basically what helps ist repetition. Repeating the same steps and ideas over and over again lets in sink in. In my opinion one of the best motivators to learn new ideas is to start you own side-project and implement the ideas there. Every now and then I learn something new and think "Hmm, I could actually implement this in Project X to make it more efficient". Refactoring helps me a lot to get a different view on my code and on how to structure code and ideas. tl;dr: Keep on reiterating what you have learned in your own projects.

Thomas Manley
Thomas Manley
13,048 Points

I don't believe you can or even should try to remember everything. Not that having a super memory isn't an advantage but the real nuts and bolts of programming is to be found in problem solving. You have to learn to think like a Vulcan. Now that being said, using the bare bones logic necessary to find useful solutions to problems requires knowledge of the syntax of the language and things of that nature, but don't get too caught up in trying to remember every little thing.

Even seasoned programmers have to reference documentation once in a while. Get the big idea first, learn the syntax a bit at a time but more importantly- use it! I would liken it to having studied a foreign language for years without actually speaking it. You'll never be fluent if you don't get out there and start tripping over your words first. You'll remember something that you f'ed up royally more often than not.