Mutablecopy返回的是一个可变的副本(新的对象,系统分配新的内存地址,修改副本不牵涉到源对象)
Copy返回的是一个不可变的副本(修改副本不牵涉到源对象;分不分配内存,看应用场景,下例)
当我们对一个不可变对象(NSString类型)使用copy关键字的时候,系统是不会产生一个新对象,因为原来的对象是不能修改的,拷贝出来的对象也是不能修改的,那么既然两个都不可以修改,所以这两个对象永远也不...
category添加属性
category中添加属性不会生成成员变量,也不会自动生成set和get方法;如果想动态为分类添加属性,需要使用运行时关联对象。在set方法中通过objc_setAssociatedObject生成成员变量,在get方法中通过objc_getAssociatedObject获取关联对象。
iOS14开发-多线程
进程与线程
进程
进程是一个具有一定独立功能的程序关于某次数据集合的一次运行活动,它是操作系统分配资源的基本单元。进程是指在系统中正在运行的一个应用程序,就是一段程序的执行过程,可以理解为手机上一个正在运行的 App。每个进程之间是相互独立的,每个进程均运行在其专用且受保护的内存空间内,拥有独立运行所需的全部资源。
线程
程序执行的最小单元,线程是进程中的一个实体。一个...
iOS14开发-MVC与Xcode快捷键
MVC
MVC:Model-View-Controller(模型-视图-控制器),是 iOS 开发中频繁使用的一种设计模式。
Model 负责维护和处理数据,如网络连接,数据计算与存储等。除了 View 和 Controller 以外的所有内容都应该包含在 Model 中。(处理和保存数据)View 负责绘制界面,例如 UIButton、UIImageView、UITableView 等。View 应该尽可能地不含业务逻辑。(绘图视图)Controller 具有对 Model 和 View 的引用...
iOS14开发-UIViewController
介绍
UIViewController 可以理解为 App 的界面,负责管理 UIView 中显示的内容和用户的交互,主要有以下作用:
负责创建和管理 UIView。响应用户与视图的交互。负责界面的切换与传值。响应设备的方向变化。有一些特殊的视图控制器(导航控制器、标签栏控制器)可以更加方便和规范地管理 UIView。
创建
storyboard
初始化箭头指向的 UIViewController。
let vc = UIStoryboard(name: "st...
iOS14开发-UIView
介绍
UIView 会占用屏幕上一个矩形的空间。主要处理两件事:画出矩形控件,并处理其中的事件。UIView 是层级结构,UIView 只有一个父 View,但可以有多个子 View。子 View 的顺序和子 View 返回的数组中的位置有关(storyboard 中左侧的树形结构图中的先后顺序)。UIView 可以直接在 storyboard 里面拖拽使用,也可以使用纯代码方式使用。
UILabel、UITextField、UIButton
UILabel
显示静态文...
Swift与JS通过WKWebView互调
创建WKWebView
lazy var webView: WKWebView = {
// 创建WKPreferences
let preferences = WKPreferences()
// 开启js
preferences.javaScriptEnabled = true
// 创建WKWebViewConfiguration
let configuration = WKWebViewConfiguration()
// 设置WKWebViewConfiguration的WKPreferences
configuration.preferences = preferences
// 创建WKUserContentControlle...
Xcode 12 使用技巧
1 class成员构造函数生成
Swift 可以为 struct 合成成员构造函数,但不能为 class 合成。Xcode 可以帮助生成代码,先选中类名,然后选择菜单 Editor —> Refactor —> Generate Memberwise Initializer。
2 设置App的“外观”
运行 App 到模拟器以后可以找到环境面板,点开它可以设置 Dynamic Type size, 暗黑模式等以查看 App 的变化。
3 选中代码块
选择某个代码块的左侧括号{,然后双...
iOS14开发-入门知识
iOS开发介绍
iOS 是由苹果公司开发的移动操作系统 。苹果公司最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统(最初叫 iPhone runs OS X)。该系统最初是设计给 iPhone 使用的(所以后来曾命名为 iPhone OS),之后陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上(所以在 WWDC 2010 上最终宣布更名为 iOS)。
iOS发展历史
2007-2020 每年发布一个新版本,最新版本 iOS 14。
Ap...
YsyPopHelper 简单易用的iOS弹窗开发助手
在App项目开发过程中,总会对弹窗有各式各样的需求,有顶部的弹窗,顶部的弹窗,中间的弹窗等等各式各样,五花八门。弹窗的开发,一般包括有弹出动画,退出动画,半透明蒙板,弹窗本身的UI和逻辑等,如果每个弹窗都要走一遍这个流程,无意是一件低效且无聊的事情。那么有没有一种解决方案,可以让我们只需要编码弹窗本身的UI和逻辑呢?这就是笔者开源YsyPopHelper这个简单易用的iOS弹窗开发助手的目的。
...