iOS 开发学习

type
Post
status
Published
date
Jun 17, 2023
slug
ios-dev
summary
tags
iOS
开发
学习
icon
该博客用来记录一下日常学习 iOS 开发心路历程和随手笔记
 

课程

 
  • 正经课程:
    • CS193p - Developing Apps for iOS --- CS193p - 为iOS开发应用程序
    • 简评:牛皮。这放在国内本科至少也是大二或更高年级才能选的专业选修课,而且至少学过 OOP(object-oriented programing)相关课程,例如 C++ 或 Java 才能有一个较为舒缓的学习曲线。
      • 这个课也确实让我对”技术是什么”有了不同的理解——技术就是你做的项目,若干年甚至几周后你就忘记了那些琐碎的技术名词,但你仍会记得你亲手做的项目。回想我当初本科修的课程,确实是 talk too much, just endless theory,我们确实需要 get hands dirty.
        但我确实不擅长”实验”,低年级的物理实验和材料力学实验每次都是花很长时间才勉强 pass,由于专业原因,幸运地避开了电路学的相关基础实验,但高年级的 OS 实验与计组实验我还是做得分外痛苦,全靠老师海底捞。汇编上机实验,整整在实验室泡了一个多月,面对那一份简陋至极的说明文档和”大概率能正常工作的”8086测试平台,完全不知道该怎么下手。
        我确实少了那份 get things done 的勇气与能力,我能做的就是模仿(或者说 copy) 别人的小项目,然后改动一些无关痛痒的小逻辑,但面对那些复杂项目,我连改动的能力都没有。
        我越来越厌恶这样的自己:只会夸夸其谈一些技术名词和所谓的顶层设计,落到实处连一个项目从哪里着手都两眼一抹黑。You really need get things done.
         

      Xcode 技巧

      • 双击开始的那个大括号,或者结尾的那个大括号,就会自动把该括号内内容阴影选中
      • Ctrl Cmd 空格 表情
      • 代码折叠/展开 : 鼠标选中方法中的左半部分花括号 { , opt + cmd + 左/右方向键
      • 代码向上/下移动: 选中代码, opt + cmd + [ 或 ] ,如果没选中,则是把光标当前行移动
      • 代码缩进调整
        • cmd + [ 或 ]
      • Xcode 左边的导航视图区域隐藏或者显示: cmd + 0
      • Xcode 右边的工具视图区域隐藏或者显示: opt + cmd + 0
      • 显示 Xcode 开发工具系统属性框架即开发文档: 注:这个快捷键打开的界面,默认的是 Swift 的,你需要根据自己的开发语言,在左上角切换你自己需要的语言。
        • shift + cmd + 0
          notion image
      • Xcode 上快速搜索你需要的属性:
        • shift + cmd + o 想要消失,按下电脑键盘左上角的 esc 键 或者 点击搜索框以外的区域 即可
          notion image
       

      CS193p 学习记录

      Jun 13, 2023 - Lecture 1: Getting started with SwiftUI - YouTube

      详细介绍了 Xcode 的界面和使用,最终搭建的 Memorize 游戏效果,逐步演示了 Memorize 小白版本的构建
      一些零碎笔记
      函数式编程(Functional programing)
      • how things behave is crucial,behave means the functions you can call on it
      • 如下面这块蓝色的花括号,就是一个 function
        • notion image
      • 下图中 cornerRadius 是一个 label
        • notion image
      • trailing closure syntax (尾随闭包语法):函数的最后一个参数为 function 时,可以把最后一个函数单独拿出来
         

        Jun 14, 2023 - Lecture 2: Learning more about SwiftUI - YouTube

        进一步介绍了Memorize 小白版本的构建
        笔记
        • 变量必须有一个值,在声明时必须赋值
        • 但也可以像传参一样不设定变量初始值,而是依靠调用它的函数设定
          • notion image
          • 即使设定了初始值,也会被调用它的函数传递的值覆盖
            • notion image
        • 变量默认是 immutable,可以使用 @State 修饰
        • forEach 在遍历时,要求每个元素是 identifiable,我们可以用被遍历数组中的每个 item 作为 id,但必须保证每个 item 都不一样,否则一样的内容会被认为是同一个view组件(词不达意,但大概意思到了)
          • notion image
        • body 应当保持精简,这意味着我们需要不停地抽象 各个组件
          • notion image
        阅读任务一:有三个文档要读,分别是
        • Swift API Design Guidelines:”命名与设计的艺术”,清晰是第一要务,”通过编写文档可以获得深刻的设计洞察力”
        编程任务一:半个小时不到就能完成,主要是添加几个按钮用于主题选择
        🗣
        在编码中,经济性(Economy)非常有价值。确保一个没有 Bug 的代码行最简单的方法就是根本就不要写这行代码。这句话的含义是,编码中每行代码都应该经过仔细的思考,避免不必要的代码和重复的代码,这样可以减少 Bug 的出现。

        Jun 15, 2023 - Lecture 3: MVVM and the Swift type system - YouTube

        介绍了核心思想:Model - View - ViewModel,让你意识到前两节课做得demo完全是过家家,真正工程上该怎么设计各个部分
        笔记

        Model - View - ViewModel

         

        types

        • struct
        • function
        • enum
        • class
        • generic
        • protocol
         
        • struct vs class
        notion image
         
        • generics
        • functions as types
          • closures
         
        • ViewModel 是个 class
          • 可以用 private 修饰一个 model 或 变量,使其完全私有,外部无法看到
          • 如果需要外部看到,但不能更改,使用 private(set)
          •  
             
         

        Jun 16, 2023 - Lecture 4: Memorize Game Logic - YouTube

        • 完成了 MVVM 的 Memorize App 的基本内容
          • Model-View-ModelView 三个文件之间的组织关系:VM 负责沟通 V 和 M
          • MemoryGame.swift 是 Model
          • EmojiMemoryGame.swift 是 ViewModel,用 class,用来连接 V 和 M
          • ContentView.swift 是 View
          • 在项目的入口 MemorizeApp.swfit 中有个 game 实例: let game = EmojiMemoryGame(),这是用来在模拟器等页面显示出内容的?
            • ContentView.swift 中有一个 VM 实例: viewModel: EmojiMemoryGame,其中又有 model 实例: model: MemoryGame<String> ,在 MemoryGame.swift又有最终的 cards: Array<Card>
        • enum
        • optional
         

    © insv 2021 - 2023