Objective-C 修饰符 类型修饰符 @interface:定义一个类的接口。 @implementation:定义一个类的实现。 @protocol:定义一个协议。 @end:结束一个类或协议的定义。 @class:声明一个类名,用于避免循环引用。 @selector:表示一个方法选择器的字符串。 属性修饰符 nonatomic:非原子操作,...
Nginx+Hugo搭建博客并部署到服务器
我的博客从最开始的LNMP+WordPress到Jekyll+GitHubPages,现在试试Hugo+Nginx。网上的教程大都是用 Hugo 部署到 GithubPages,其实 Jekyll 跟 Hugo 的区别并不大。 我从 GithubPages 换到 vps 是因为 GithubPages 对大陆的访问并不友好,我正好有一台 HK 的 vps;而且 GithubPages 的内...
在CentOS 7中通过Hugo+Caddy+Webhook自动部署网站到服务器
折腾完Nginx后继续折腾Caddy,下面是踩坑记录。 大致过程 本地安装Hugo制作静态网站,将静态网站推到Github仓库中,服务器上安装Caddy利用Github的Webhook抓取静态网站到服务器上实现自动部署。 搭建环境 本地:MacOS 服务器:CentOS 7 Hugo 本地安装Hugo并搭建网站 可以参考官网的指引:https://gohugo.io...
iOS App新安装测试与老版本升级测试
真机测试的时候,删除老版本从Xcode安装属于新安装测试;从Appstore安装老版本后再从Xcode安装属于版本升级测试。这两个测试都要做一下,不然可能会出现我这个问题,新安装没事,版本升级闪退。 给App新加了个功能,测试新安装正常,测试版本升级的时候崩了。虽然知道是因为循环引用缺少逻辑判断引起的,但是为什么新安装没崩,有点莫名其妙。 新版本加了个定时器做循环定时任务。因为需...
Swift访问控制
在开发 iOS 应用时,我们需要对代码中的各种组件进行访问控制。为此,Swift 提供了多种访问控制级别来限制属性、方法和类等组件的访问范围,并提高代码模块化程度。 访问控制级别 Swift 中有五个访问控制级别,按照访问权限从高到低分别为: open:可被任何 module 访问,允许子类继承和重写,最高级别; public:可被任何 module 访问,但不允许子类继承和...
Swift内存安全
Swift 是一门安全的、快速的编程语言,其中之一的原因是它在设计上考虑了内存安全。在这篇博客中,我们将深入探讨 Swift 的内存安全机制。 引用和值类型 Swift 中的类型可以被划分为两种:引用类型和值类型。值类型包括结构体(struct)和枚举(enum),而引用类型则包括类(class)。这两种类型不同的一个主要区别就是它们对内存的使用方式。 值类型被赋值给变量或常量时,Sw...
Swift中的自动引用计数
自动引用计数(Automatic Reference Counting,简称 ARC)是 Swift 中一种内存管理机制。它能够自动追踪和释放不再需要的实例所占用的内存,从而使开发者专注于编写高效的 Swift 代码,而无需手动管理内存。 在本文中,我们将深入探讨 ARC 的工作原理、如何避免强引用循环以及其他相关内容。 引用计数 为了了解 ARC 工作原理,我们首先需要了解引用计数的...
Swift中的不透明类型
在Swift编程语言中,不透明类型(Opaque Types)作为一种抽象类型可以隐藏底层实现细节。这篇博客将深入介绍Swift中的不透明类型,并提供一些有用的示例和最佳实践。 什么是不透明类型? 一个类型被认为是不透明类型,当它能够隐藏其底层实现细节并仅公开必要的接口。此外,不透明类型也可用于封装相关类型之间的关系,从而使代码更加模块化和易于管理。 Swift使用some关键字来定义...
Swift中的泛型
什么是泛型? 泛型是一种让代码更加灵活、可重用和类型安全的编程技术。通过泛型,我们可以定义出适用于任意类型的函数、方法、类、枚举和结构体等,从而避免了冗余代码和类型错误。 泛型的基础知识 泛型函数 泛型函数是一种参数化函数,在函数定义中使用占位符类型名称。这些占位符类型名称被称为类型参数,可以在函数调用时替换成具体类型。以下示例演示了如何编写一个简单的泛型函数: func swap...
Swift中的协议
Swift 是一种强类型的编程语言,支持面向对象和函数式编程范式。协议(Protocol)是 Swift 中的一个重要特性之一,也是面向对象编程中常用的机制之一,它定义了方法、属性和其他成员的规范,而不关心具体实现。本文将全面介绍 Swift 中的协议,包括协议的基础知识、扩展协议、协议组合、协议继承、自定义类型实现协议等。 基础知识 定义协议 在 Swift 中,可以使用 proto...