Mistake: Thinking that tests in Specta run in order.
I was running into trouble with a test that setup a BeforeAll statement that initialized the objects and tested the initialized conditions without reinitializing the objects. The test would sometimes pass and sometimes fail. The reason was that another test was changing the variables before the test that tested the initialization was run.
Lesson: They do not! Make sure that the test resets the objects each time by using BeforeEach instead of BeforeAll.
Mistake: Designing apps for one screen size.
I was playing around with a craiglist type app before coming to the Flatiron School and was about to add the item page for each of the listings. In Xcode 5, the UI in the storyboard was in the shape of an iPhone 5s. In Xcode 6, this became a 600 x 600 point box. I learned that since there were now four screen sizes ( 3.5″, 4.0″, 4.7″ and 5.5″ diagonal), Apple wants apps to be able to support the different screen sizes. If you design the app for the 4.0″ screen, the constraints that Storyboard uses will be messed up for the other formats.
Lesson: Design for all four screen sizes.
Mistake: Giving my classes confusing names.
Here are my class names for a project with a tableview and a detailed view.
ViewListingsTableViewController Listing ListingTableViewController ListingTableViewCell
What’s the difference between the first and third controller? I couldn’t remember and ended up making the first one into ListingDetailsViewController.
Lesson: Make class names self documenting.
Mistake: Not initializing an array and thinking that an array property is an empty array to begin with.
If you don’t initialize an array, as in
NSArray *newArray = [[NSArray alloc] init];
(even if it’s a property) then, the new array property is nil and it will not be able to add things to it.
Lesson: Initialize and avoid nils.
Mistake: Staying late to finish something only to oversleep the next day.
Lesson: Have a hard deadline for when to leave the office.
Mistake: Not selecting the storyboard as the main interface and not being able to see anything on the app.
Lesson: Make sure that General Settings > Deployment Info > Main Interface is not empty. Otherwise, nothing will show up.