
Mobile Makers Academy-Online iOS Bootcamp
My Story 9/29 — 11/20
I started the Mobile Makers Bootcamp to reach my goal of being able to take my ideas and turn them into real products for the marketplace. Also to better understand code, the industry, make more friends in the space and just to make myself an overall stronger person to collaborate with on future projects or ventures.
I wanted to take the in-person version of the class,but it was a bit of a stretch financially to quit my job and then self fund the course. So here begins my journey.
Note- this is a work in progress and will be significantly cut down at the end ☺
9/29 Welcome Presentation Highlights
Self Motivation, Collaboration, Expose Your Ignorance, Share Your Knowledge, Empty Your Cup -all keys to success for my time in MM and beyond
Expose your ignorance-never be afraid to ask questions. Own IT
Set your bar. Exceed your expectations. -How can I put some of my own secret sauce on my projects?
Importance of Language-can you accurately talk about what you are doing programmatically? really makes sure you understand and internalize what you are learning
Set your goal for the program- develop the tool set to take app ideas to real products for the market place
Set your real stretch-build two apps that generate over a million dollars each
Learning keys-Reflect and make a conscious decision to see how many comparisons you can make with what you are learning. Mindset is important, take a step back and get to happy place before, convince yourself you will get the noise out!! Heavy emotions can be a cognitive load on the brain. Use your emotions as a tool-constantly check them and help yourself to get there!
Thirst for knowledge-always be a person who goes beyond any form of curriculum
Identity-embrace the identity you want. “Fake it til you become it”
When your done you are -really Just Beginning
9/29 Storyboards
Classes are in capital letters and can have methods. Ints, floats, NSU(unsigned) and NSInt are primitive data types. Floats have multiple chunks of storage, more than an int.
CamelCase- thisIsAnExample (1st lettter lowercase, boundaries capitalized) used for methods. Be verbose on method names
User Interface responses- Actions!!! Sender is the passed in parameter(object making that action happen)
If you NEED to do something with it in code..Outlets!! ie access variables. Outlets hook up to properties. Buttons can also have outlets
.m file to make properties private
viewDidLoad- gets called when the storyboard has hooked everything up. 1st opportunity to start working with variables
[super viewDidLoad] -this calls the parents implementation of the method. Overwriting? call the superclass method first
Class blueprint. Make something out of that blueprint(instance or object)
self-points to the object I am CURRENTLY in
Dont memorize, learn to SOLVE problems
9/30 Git and Segues
Don’t work in the same file at the same time-Notify others when they are not other
Don’t both on the storyboard at the same time!!!
If any changes full integration(group pushing and pulling) is required
Don’t push broken code(no compile)!!!!!!!!!!!!!!
Commit early and often
Make branches, commit to your branch when you get something working
Cloning-clone a repo, fetchs all repos but only creates one local branch
remote branches-references to the state of branches on your remote repos
9/30 Segues
class-capital letters, blueprint, used to create new object(instance), also called types
alloc init-> creates new unique instance,
alloc init-> a second time, creates another separate instance
House *myHouse = [[House alloc]init];
- in this example myHouse is a pointer to the object(new instance of House class)
properties-class level, like global variables, can access from any method in class, objects that appear on the instantiated instances(instantiated with the instantiated class)-> build a door you get a knob with it
One thing that often confused me is how properties can be a class. But it makes sense if you think of using Apples classes in properties. Gives you access to that variable, its unique properties and methods. This object is composed of this attribute, and the particular attribute is an instance of some class- so you can apply certain methods and properties on it. →clean up later
Pay attention to inheritance . NSObject->UIVC->UIView which has background color prop not UIVC
Navigation controller required for segueways
prepareforsegue-configures the next VC,
(UIStoryboardSegue *) segue ->pointer so we know which segue to work with in the method
Class methods->related to an overarching concept and not any particular object
Try to keep dot notation for properties-> code readability and convention standard.
properties of type id cannot access properties through dot notation-> revisit?
AppImages stored in images xcassets-one name no spaces
change your variable names as necessary to keep up!!!
Keep properties in .m file -> if not there is a chance you could mess with the view of the next VC and weird stuff could happen!!
9/30 Shortcuts*** and review
command arrow — fast move, option arrow- fast move between words, option arrow +shift -select between words or double click, triple click -select whole line, command O -left hand side bar, command shift O-quick open a file by typing,
Tabs- try 1 tap for storyboard, 1 tab for source code, command shift [ -> shift
Other trick- In terminal open . opens current dictionary. can also drag a folder over terminal icon to open folder in terminal
Didrecievememorywarning- method is rarely needed, delete and put back at the end of app development
generally do not need outlet when you have an action-can reference sender
look at base class for other methods-supers implementation
Multiply code assignment-takeaways
You cant connect two storyboard objects to one another, ViewDidLoad offer the option to simulate this activity Because a property can always be updated after the view is loaded
you must declare variables at the top of method-locally if you plan to work with them
Attributed strings!! look back at question
10/1 Delegation
A lot of things in iOS have the delegate system
common design pattern- one object to tell another about some type of event
UIResponder- everything that can be a responder inherits from this class
Becoming 1st responder-related to keyboard and interacting with it
NSURL- has properties to take apart and work with a url
webview -takes urlRequest
self.webView — pointer to an object that is a web view
VC is UIWebViews Delegate, < UIWebViewDelegate > -delegates to VC what should happen-recieves events. The methods are UIWebViews but there are caLLed on VC
command a, ctrl i fix indentation ?? check
vc typically handles its views(.m file)
DONT USE OUTLETS TIL YOU NEED THEM
Set delegate in storyboard or in code(if not in storyboard)
I consistently forget to call self when accessing methods on the class I am currently in
Helper methods -Never repeat yourself!! -encapsulate Assist us in writing our code, create at bottom of file. can call anywhere
Get in the habit of continually refactoring code
UIAlertview requires button- must set programatically
10/2 Gestures
UIGestureRecognizer -gesture methods are relatively new, have states such as began, ended and currently on
navbar-tint color is the color of the upper nav bar
Wiring gesture- check connects inspector (->) far right
gestures go to bottom of left panel, rename them in this Control Center scene
Also in Control Center Scene-bottom is on top, 2 axeses??
Can get the point of a gesture -CGpoint*point= [panGestuer translationInView:self.view];
“Developers should NEVER test their own code”
command right bracket -indents, refactor- rename
functions stand completely alone
sizeTOFit cool method for buttons
10/3 Refresh Friday
Functional programming -old world, relies on global data, breaks functions that use that data-all of code written in form of functions, tightly coupled
Objects- we can define the public data and functions that we want to allow other objects to call, loosley coupled- does not have access to private data
@interface should be minimal and user friendly
@property global data only to THAT object
We are designers -compiler =manufacturer (of gears in watch example)
Objects -nouns, methods -verbs, properties -attributes
persisting data -object will talk to some OTHER object that is responsible for managing that data
Classification -is a
true for anything that inherits
Wheeled vehicles->trucks->fire trucks
override -call super +implement additional things
Does override change classes further down the line? yes inherits one level up, should be true if your classification hierarchy is true!!!!
Composition -has a
to manipulate
get comfortable creating alot of separate practice projects
method on instance changes properties of that instance not class!
: is a
alloc is a class method
Refresh pt 2
modal-good for help screens and messaging
Control center —
Constraints -visit later!!
Assistant editor -main.storyboard preview like print preview is a great way preview app for different devices
design for small screens first(easy to go out) and pretty much Height and Width everything
Not Key Value Coding Compliant -VC still thinks there is a connection there. Be sure to check invidiual ui elements then entire VC*
Memory warning method- when app is in background chance of being terminated, can release certain temp data -when app slid off stack temp memory is terminated
Prepare for Segue -gives you access to instance of next View Controller -ability to access instance of that
check build settings to confirm you are targeting the device you want
10/6 Tableviews and Arrays
fundamental UI construct, array based and ordered
can extend content under top and bottom bars-> attributes section
Tableview vs. TVC -allows accessory views, customizing
Must connect both delegate and datasource for TableView
delegate
datasource-similar to delegate, allows VC to recieve methdos to configure VC
be sure to add delegate declarations to VC.m file
numberOfRowsInSection-returns row number, cellForRowAtIndexPath —returns cell-basically asks for cell and provides id+index path
dequeReusableCellWithIdentifier -removes cell for que places old back on que, grabs cell from tableview.
arrayWithObjects must end with nil -tells where to end, also make arrays descending in code
custom colors-colorwith method
- **when making helper methods- you must reference yourself to call, calling method on VC controller class. -confusing to me revisit
- but if you think about it you normally call a class that has that method, in my this case my current VC has the method. i still think it should be a class and not instance. have to think more on that.
- 11/1 Failure Point
I’ve fallen very far behind in the class. Due to some traveling, personal soul searching and overall just not taking the class as seriously as I should. I’ve only been in the class a few weeks, but it has just slipped up from under me.
My girlfriend gave me some excellent thoughts and while they kind of hurt at first it was what I needed to hear. She just happens to study enginnering and cs and I couldnt be luckier. But she emphasized just how hard programming really is and also the patience required to move through it. All things that I know but lately have been very weak at. And finally the need to be creative and NOT look at solutions, but fight through them yourself. I was getting so far behind that I was starting to just look at solutions which robs me of the learning process.- you simply dont learn unless you go through it yourself something I really needed to be reminded of. And lastly, I need to have a serious goal Check with myself.
There are less than 3 weeks left in the class. I’m seriously behind, but its ok because I know its what I do from this point on that matters.
My goal is to be a software entrepneuer/ catalyst- be heavily involved in the programming and development, marketing and all areas really but at the end of the day to produce great highly demanded and growing products.
I also still have many commitments- a full time job, health and fitness and a social life. I am ok with moving slow i just dont like being so overwhelmed that I dont even want to start. The good news is I will always have the class resources after the class to buff up on. -enought for now.