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.