swift5.x基础知识入门

源码在我的主页下,欢迎下载,我非常喜欢swift和oc的语法,两者相似,我坚信天下没有学不会的技术。

  • 基本介绍
    ///这里只介绍一些初学swift的基本概念,需要提前了解的东西
    /*
    1.swift语法和OC不一样,OC每一行代码都是以分号";"结尾的,但是swift结尾是没有结尾标识符的
    2.OC只要语法正确就可以,不用整理格式,但是swift非常注重格式,比如 a = 3 ,在=的左右必须都有一个空格,或同时有多个,当=左右空格个数不一样时,比如 b= 2 这样会报错
    3.OC调用方式的时候是,是类名或对象名+空格+方法名,然后用中括号括起来:[Person saveCall];
    swift是类名或对象名+.+方法名即可: person.saveCall ,类似与OC的点语法
    4.swift语法整体兼容OC,可以通过桥接和OC无缝对接
    5.swift语法风格整体类似于Java
    6.新建的swift类,只有一个.swift文件,没有.h文件和.m文件
    7.swift可以使用cocoapods,方法同OC一样
    8.不需要导入头文件,可以直接引用其他类里面的方法或属性
    9.swift没有宏这个概念
    10.swift没有类扩展这个概念
    11.没有main.m文件 @UIApplicationMain是程序入口标识
    12.class 标示声明类 {} 用来标识类的范围
    13.构造函数 [xxx alloc] initWithXXX] ==> xxx(XXX:) ;[alloc init] => ()
    14.UIButtonTypeContactAdd => 枚举类型.枚举值(简写 .枚举值)
    15.在当前类中访问属性或者方法的时候 可以省略 self. 推荐不写, 后面的闭包中必须添加self.
    16.按钮的监听事件 使用 #selector
//
//  ViewController.swift
//  swift基础知识20210313
//
//  Created by 鲁军 on 2021/3/13.
//import UIKit
class ViewController: UIViewController {override func viewDidLoad() {super.viewDidLoad()let area1 = getArea(a: 2, b: 4)let area2 = getArea2(width: 3, height: 4)print(area1,area2)numOne()fiveDemo()}// MARK: - 常量和变量 Firstfunc firstDemo1() {let a = 10// a = 2   ----> 会报错 let定义的变量不能改变,不能进行赋值print(a)   // ---> 打印使用print语法,不适用nslogvar b = 20b = 30   //不会报错,var定义的变量是可以被修改的let c: Int = 10let d: CGFloat = 20.3let e: Float = 3.1415/*swift是一个强类型的语言option + click 是swift开发的热键 没有之一Int 是swift中整数的默认类型(NSIbteger)小数默认类型是doublelet d: CGFloat = 20.3  这属于手动指定类型*///        let res1 = c + d   -->  会报错let res2 = c + Int(d)print(res2)/*不同类型之间的运算swift中类型不一样的时候不能操作,没有银行形式的转换 需要coder手动转换数据转换类型: 通过类型调用构造函数 传递参数转换 ,或as语法*/}/*----------------------------------------------------------------------------*/// MARK: - swift与OC的不同func scondDemo() {let myView = UIView(frame: CGRect(x: 100, y: 100, width: 100, height: 100))//        myView.backgroundColor = UIColor.yellow// myView.backgroundColor = #colorLiteral(red: 1, green: 0.3233583075, blue: 0.3979080506, alpha: 1)myView.backgroundColor = UIColor.green//color Literal属性let btn = UIButton(type: UIButton.ButtonType.custom)//let btn1 = UIButton(type: .contactAdd)  可以简写 直接.+枚举myView.addSubview(btn)//添加到根视图view.addSubview(myView)//给按钮添加点击事件btn.addTarget(self, action: #selector(btnDidClick), for: .touchUpInside)}@objc func btnDidClick() {print("我被点击了")}/*----------------------------------------------------------------------------*/// MARK: - 可选类型func thirdDemo() {//可选类型有可能有值,也有可能为nil//let声明可选类型是没有意义的//必选类型一定有值var a:Int? = 10a = nil//这就是一个可选类型//不能够对可选类型做强制解包var b: Int? = 15let c = (b ?? 0) + 20var d = 10let res = 20 + dprint(res,(b ?? 0),c,d)//可选类型不能够直接计算/*你是否需要使用'?'或者'!'进行解包-- '!'强制解包 一定要获取一个值 不能够为nil-- '?'可选解包 后面具体说-- 如果可选类型要进行计算的时候,系统会报错,需要程序员手动处理可选类型-- '!'强制解包有风险,需要谨慎使用,程序员需要对'!'负责  如果为nil 程序会崩溃-- 一定要考虑是否安全 一定有值 防患于未然-- '??' 合并空选项 必须提高 ?? 的优先级*/}/*----------------------------------------------------------------------------*/// MARK: - 分支结构func fourDemo() {//1.分支结构 if语句/*1. 条件语句没有 () ,可以写 但不推荐写2. 分支结构必须有 {}3. 没有 非零即真的概念,只有 true 和 false*/let a = 13if a < 14 {print("小,很小,非常小")} else {print("大,很大,非常大")}//2. if let//模拟网络请求let urlString = "http://www.baidu.com"let url = URL(string: urlString)if url != nil {let req1 = URLRequest(url: url!)}if let url2 = URL(string: urlString) {let req2 = URLRequest(url: url2)}//3. guard(守卫) let else/*作用与if let 相反guard let 能够减少一层分支嵌套*/let urlStr = "http://www.baidu.com"guard var url1 = URL(string: urlStr) else {//不希望guard 能够被穿透//如果url1 为nil 就进入else 分支 会直接returnreturn}let req = URLRequest(url: url1)//4.guard 多个可选值的判断var age1: Int? = 15var age2: Int? = 20if age1 != nil && age2 == nil {}guard let ag1 = age1,let ag2 = age2 else {print("嘎嘎嘎")return;}//5.switch/*1.不需要写break2.每个匹配项中至少有一段代码可以执行3.可以判断任意类型4.一次可以匹配多个值5.在匹配项中可以声明临时变量,而且不需要加 {} 限制作用域*/let x = "20000"switch x {case "20000","30000":print("架构师")case "18000":print("高级开发工程师")case "12000":print("中级开发工程师")case "6000":print("菜逼")default:print("逗比")}}/*----------------------------------------------------------------------------*/// MARK: - 循环func fiveDemo() {let range = 0...10for i in range {print(i)}print("----------------------")//遍历0到10,不加包括10,   0..<10 表示不包括10for i in 0...10 {print(i)}//对没有使用的变量或者常量在编译的时候可以忽略for _ in 0..<10 {print("												

swift5.x基础知识入门相关推荐

  1. 学习笔记:Java 并发编程①_基础知识入门

    若文章内容或图片失效,请留言反馈. 部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 视频链接:https://www.bilibili.com/video/av81461839 视频下载: ...

  2. GIS地图基础知识--入门教程

    wenzhanhttp://www.gisbbs.net/viewthread.php?tid=106&extra=page%3D1 GIS地图基础知识--入门教程 GIS 地 图 知 识 1 ...

  3. C语言基础知识入门和C语言入门基础知识大全

    一.C语言基础知识入门 C语言一出现,就以其丰富的功能.强大的表达能力.灵活性.方便性和广泛的应用,在世界范围内迅速普及和普及.C语言不仅高效而且可移植.它可以用来开发应用软件.驱动程序.操作系统等. ...

  4. JavaScript 基础知识 - 入门篇(二)

    11. 函数 11.1 函数的基础知识 为什么会有函数? 在写代码的时候,有一些常用的代码需要书写很多次,如果直接复制粘贴的话,会造成大量的代码冗余: 函数可以封装一段重复的javascript代码, ...

  5. R语言基础知识入门学习(一)

    目录 系列文章目录 一.软件下载 二.基本知识 1. 对象 2. 向量 3. 向量化 4. 因子 总结 系列文章目录 R语言基础知识入门学习(一) 一.软件下载 我们可以通过这个网址对R语言软件进行下 ...

  6. 网络安全基础知识入门!网络安全学习教程

    当我们学习网络安全的时候,需要对它的基础知识做一个简单的了解,这样对以后的学习和工作都会有很大的帮助.本篇文章为大家总结了网络安全基础知识入门的内容,快跟着小编来学习吧. 计算机网络 计算机网络是利用 ...

  7. 计算机网络建设中涉及到哪些硬件,网络基础知识入门

    网络基础知识入门 导语:随着计算机的广泛应用和网络的流行,我们应该要知道一些网络基础知识,下面是小编收集整理的网络基础入门知识,欢迎参考! 计算机网络是什么 这是首先必须解决的一个问题,绝对是核心概念 ...

  8. Python基础知识入门(二)

    Python基础知识入门(一) Python基础知识入门(三) Python基础知识入门(四) Python基础知识入门(五) 一.数字类型 Python 数字数据类型用于存储数值.数据类型是不允许改 ...

  9. 000视频基础知识入门--科普向

    本文所有知识资源均来自网络,如有侵权,联系可注明来源或删除本文章.本文为音视频基本知识入门,偏向科普性质. 视频基础知识入门-成像到显示 1 成像 1.1 三原色 1.1.1 加色法 1.1.2减色法 ...

最新文章

  1. xdoj 1144 K叉哈弗曼树
  2. erlang调优方法
  3. Linux操作系统下查看硬件信息的命令总结
  4. 解决ajax方法内部不能给外部变量赋值的问题
  5. JQuery Datatables 获取实例及如何进行全局设置
  6. 软考信息系统项目管理师_信息化与信息系统4_软件工程_新一代信息技术---软考高级之信息系统项目管理师006
  7. Linux Tomcat9 控制界面及管理配置
  8. 免费屏幕录像软件哪个好?简单几步教你快速录制无水印的高清视频!
  9. 统计计量丨统计学公开课大盘点(附下载)
  10. 《深度学习入门-基于Python的理论与实现》第七章带读 -- CNN介绍
  11. 快速迭代式开发使用方法总结
  12. android 日记 app推荐,用这些 APP 来记录生活,再也不用担心无法坚持写日记
  13. 秋招面经合集:阿里、华为、美团、携程、去哪儿、小米、京东都有
  14. 42表盘直径是从哪测量_手表尺寸怎么选择 手表尺寸怎么测量
  15. 计算机网络类别(按照作用范围分类)
  16. 华为通用软件开发工程师面经(业务主管面挂)
  17. Matlab 隐函数方程求解最小二乘法拟合一阶线性拟合二阶拟合传感器实验
  18. 计算机桌面底下显示条,详细教您电脑屏幕出现条纹怎么办
  19. 微软官方提供的免费正版的虚拟机
  20. Git提交代码到新仓库(--mirror)

热门文章

  1. mysql uuid_short 为什么不存在_MySQL内置函数uuid和uuid_short
  2. 一直在构建版本_构建系统与代码结构SpringBoot
  3. android 多界面光标,android.database.CursorWindowAllocationException:光标窗口分配2048 kb失败,即使关闭游标...
  4. 库存转换是什么意思_为什么要用WMS系统?WMS能带来哪些价值
  5. vue 判断同一数组内的值是否一直_前端代码+后端API,值得一学的Vue高仿音乐播放器实战项目
  6. iPhone12详细拆解报告出炉!(附主要器件清单)
  7. linux如何更改默认内核,[linux 内核] 设置内核的默认启动版本
  8. python37下载_pythoncom37.dll 3.7.224.0
  9. php 启动手机浏览器,php实现读取手机客户端浏览器的类
  10. java防止undo空间撑爆_秒杀系统设计补坑篇(seata回顾)