<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://homeostasis.scs.carleton.ca/wiki/index.php?action=history&amp;feed=atom&amp;title=Mobile_App_Development_2022W_Lecture_9</id>
	<title>Mobile App Development 2022W Lecture 9 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://homeostasis.scs.carleton.ca/wiki/index.php?action=history&amp;feed=atom&amp;title=Mobile_App_Development_2022W_Lecture_9"/>
	<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Mobile_App_Development_2022W_Lecture_9&amp;action=history"/>
	<updated>2026-04-06T03:22:45Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Mobile_App_Development_2022W_Lecture_9&amp;diff=23807&amp;oldid=prev</id>
		<title>Soma: Created page with &quot;==Video==  Video from the lecture given on February 9, 2022 is now available: * [https://homeostasis.scs.carleton.ca/~soma/mad-2022w/lectures/comp1601-2022w-lec09-20220209.m4v...&quot;</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Mobile_App_Development_2022W_Lecture_9&amp;diff=23807&amp;oldid=prev"/>
		<updated>2022-02-09T21:02:00Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;==Video==  Video from the lecture given on February 9, 2022 is now available: * [https://homeostasis.scs.carleton.ca/~soma/mad-2022w/lectures/comp1601-2022w-lec09-20220209.m4v...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Video==&lt;br /&gt;
&lt;br /&gt;
Video from the lecture given on February 9, 2022 is now available:&lt;br /&gt;
* [https://homeostasis.scs.carleton.ca/~soma/mad-2022w/lectures/comp1601-2022w-lec09-20220209.m4v video]&lt;br /&gt;
* [https://homeostasis.scs.carleton.ca/~soma/mad-2022w/lectures/comp1601-2022w-lec09-20220209.cc.vtt auto-generated captions]&lt;br /&gt;
Video is also available through Brightspace (Resources-&amp;gt;Zoom Meetings (Recordings, etc.)-&amp;gt;Cloud Recordings tab).  Note that here you&amp;#039;ll also see chat messages.&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Lecture 9&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
Today: Tutorial 5&lt;br /&gt;
&lt;br /&gt;
Also, questions about A1 or Tutorial 4?&lt;br /&gt;
&lt;br /&gt;
Tutorial 5 is the last on iOS&lt;br /&gt;
Tutorial 6 we start with Android&lt;br /&gt;
&lt;br /&gt;
Please have Android Studio running before Feb. 16th (for Tutorial 6).&lt;br /&gt;
&lt;br /&gt;
Android will be in Kotlin, which has many connections with Swift&lt;br /&gt;
 (but Swift was a better Objective-C, Kotlin is a better Java)&lt;br /&gt;
&lt;br /&gt;
A2 is due Feb 18th but is accepted until Feb 22nd, solutions will come out on Feb 23rd (during Winter Break) and we&amp;#039;ll discuss them during the midterm review.&lt;br /&gt;
&lt;br /&gt;
A2 will come out tomorrow.&lt;br /&gt;
&lt;br /&gt;
Tutorial 5&lt;br /&gt;
----------&lt;br /&gt;
 - UIKit/Storyboard, not SwiftUI&lt;br /&gt;
 - with SwiftUI, we specify the layout using constraints&lt;br /&gt;
    - avoid absolute coordinates because supposed to work&lt;br /&gt;
      on many differently sized devices&lt;br /&gt;
 - with Storyboard, we can do constraint-based layout, but&lt;br /&gt;
   by default it will use absolute coordinates&lt;br /&gt;
&lt;br /&gt;
Storyboard *seems* very easy to use.  It is a GUI for making layouts!&lt;br /&gt;
 - but if you want layouts that work on different devices, not so good...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Storyboard is based on old tech&lt;br /&gt;
 - direct descendent of NeXTStep&amp;#039;s interface builder (IB),&lt;br /&gt;
   which is from 1989 or so&lt;br /&gt;
 - MacOS is a direct descendent of NeXTStep&lt;br /&gt;
    (In some frameworks you&amp;#039;ll see the abbreviation &amp;quot;NS&amp;quot;, that stands for&lt;br /&gt;
    NeXTStep)&lt;br /&gt;
&lt;br /&gt;
Notice that SwiftUI is really taking ideas from web development and&lt;br /&gt;
using them for mobile and desktops&lt;br /&gt;
 - web pages have to adapt to different screen sizes, after all&lt;br /&gt;
&lt;br /&gt;
Storyboard is fundamentally more mature than SwiftUI&lt;br /&gt;
 - underlying tech mostly for SwiftUI&lt;br /&gt;
 - been around decades longer&lt;br /&gt;
 - Storyboard is how iOS apps have been built since the beginning&lt;br /&gt;
 - so, you may need to use components from UIKit/Storyboard&lt;br /&gt;
   - but you can integrate the two, you don&amp;#039;t have to make pure SwiftUI apps&lt;br /&gt;
&lt;br /&gt;
&amp;quot;weak&amp;quot; variables means that someone else manages the underlying storage&lt;br /&gt;
 - so we&amp;#039;re not in charge of reference counting, this reference&lt;br /&gt;
   doesn&amp;#039;t control the object&amp;#039;s lifetime&lt;br /&gt;
&lt;br /&gt;
Why are there !&amp;#039;s after the @IBOutlet declarations?&lt;br /&gt;
 - we&amp;#039;re manually unwrapping the value&lt;br /&gt;
 - basically, we&amp;#039;re asserting that this value will never be nil&lt;br /&gt;
   (if it ever is, the app will crash)&lt;br /&gt;
    - note that we won&amp;#039;t be assigning values to it,&lt;br /&gt;
      iOS will take care of it through the connection to the appropriate storyboard&lt;br /&gt;
&lt;br /&gt;
Note that ViewController is a class, not a struct&lt;br /&gt;
 - structs are immutable, classes are mutable&lt;br /&gt;
   - (yes Views in SwiftUI have state, but @State declarations&lt;br /&gt;
      actually are an immutable reference to a mutable class&lt;br /&gt;
      that stores the actual data)&lt;br /&gt;
&lt;br /&gt;
There&amp;#039;s no weird domain specific language in Swift code in Storyboard apps&lt;br /&gt;
 - the DSL part is in the XML/interface builder for the storyboards&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Soma</name></author>
	</entry>
</feed>