<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[DevXue的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/DevXue</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; DevXue]]></copyright><item><title><![CDATA[Mac OS系统下QT版本兼容]]></title><link>https://blog.youkuaiyun.com/DevXue/article/details/130264584</link><guid>https://blog.youkuaiyun.com/DevXue/article/details/130264584</guid><author>DevXue</author><pubDate>Thu, 20 Apr 2023 13:41:44 +0800</pubDate><description><![CDATA[QT Creator 运行未响应]]></description><category></category></item><item><title><![CDATA[C++学习笔记]]></title><link>https://blog.youkuaiyun.com/DevXue/article/details/130122711</link><guid>https://blog.youkuaiyun.com/DevXue/article/details/130122711</guid><author>DevXue</author><pubDate>Thu, 13 Apr 2023 09:38:15 +0800</pubDate><description><![CDATA[指针、引用、虚函数、命名空间、泛型、数据类型、类型限定符、存储类、杂项运算符、循环、判断、函数、结构体、类、继承、重载、多态、异常处理、关键字]]></description><category></category></item><item><title><![CDATA[优快云-markdown使用说明]]></title><link>https://blog.youkuaiyun.com/DevXue/article/details/104877461</link><guid>https://blog.youkuaiyun.com/DevXue/article/details/104877461</guid><author>DevXue</author><pubDate>Sun, 15 Mar 2020 13:33:22 +0800</pubDate><description><![CDATA[这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题，有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能，丰富你的文章UML 图表FLowchart流程图导出与导入导出导入
欢迎使用Ma...]]></description><category></category></item><item><title><![CDATA[将博客搬至优快云]]></title><link>https://blog.youkuaiyun.com/DevXue/article/details/104893918</link><guid>https://blog.youkuaiyun.com/DevXue/article/details/104893918</guid><author>DevXue</author><pubDate>Sun, 15 Mar 2020 13:28:06 +0800</pubDate><description><![CDATA[将博客搬至优快云

  

]]></description><category></category></item><item><title><![CDATA[Android：Unable to load script.Make sure you're either running a metro server（ run 'react-native]]></title><link>https://blog.youkuaiyun.com/DevXue/article/details/104893908</link><guid>https://blog.youkuaiyun.com/DevXue/article/details/104893908</guid><author>DevXue</author><pubDate>Fri, 03 Jan 2020 11:41:10 +0800</pubDate><description><![CDATA[报错提示：

Unable to load script.Make sure you're either running a metro server（ run 'react-native start' ） or that your bundle 'index.android.bundle' is packaged correctly for release.

解决方法：

1....]]></description><category></category></item><item><title><![CDATA[Swift-扩展，给一个现有的类，结构体，枚举，还有协议添加新的功能]]></title><link>https://blog.youkuaiyun.com/DevXue/article/details/104893888</link><guid>https://blog.youkuaiyun.com/DevXue/article/details/104893888</guid><author>DevXue</author><pubDate>Mon, 11 Nov 2019 06:29:10 +0800</pubDate><description><![CDATA[扩展可以给一个现有的类，结构体，枚举，还有协议添加新的功能。

拥有不需要访问被扩展类型源代码就能完成扩展的能力（即逆向建模）。（扩展和 Objective-C 的分类很相似，与 Objective-C 分类不同的是，Swift 扩展是没有名字的。）

Swift 中的扩展可以：

添加计算型实例属性和计算型类属性
定义实例方法和类方法
提供新的构造器
定义下标
定义和使用新的嵌...]]></description><category></category></item><item><title><![CDATA[Swift-控制流，循环、条件语句、控制转移]]></title><link>https://blog.youkuaiyun.com/DevXue/article/details/104893896</link><guid>https://blog.youkuaiyun.com/DevXue/article/details/104893896</guid><author>DevXue</author><pubDate>Mon, 11 Nov 2019 06:29:05 +0800</pubDate><description><![CDATA[1. For in 循环
遍历一个集合中的所有元素。 例如：数组中的元素、范围内的数字或者字符串中的字符。

遍历一个数组所有元素：

let names = ["Anna", "Alex", "Brian", "Jack"]
for name in names {
    print("Hello, \(name)!")
}
// Hello, Anna!
// Hello, A...]]></description><category></category></item><item><title><![CDATA[Swift-类和结构体，对比、属性访问、构造器、值类型、引用类型]]></title><link>https://blog.youkuaiyun.com/DevXue/article/details/104893890</link><guid>https://blog.youkuaiyun.com/DevXue/article/details/104893890</guid><author>DevXue</author><pubDate>Mon, 11 Nov 2019 06:29:00 +0800</pubDate><description><![CDATA[1. 结构体和类对比


共同点，两者都可以：

定义属性用于存储值
定义方法用于提供功能
定义下标操作用于通过下标语法访问它们的值
定义构造器用于设置初始值
通过扩展以增加默认实现之外的功能
遵循协议以提供某种标准功能


与结构体相比，类还有如下的附加功能：

继承允许一个类继承另一个类的特征
类型转换允许在运行时检查和解释一个类实例的类型
析构器允许一个类实例释放任何其所被分...]]></description><category></category></item><item><title><![CDATA[Swift-类型转换、类型检查（is）、向下转型（as？、as！）]]></title><link>https://blog.youkuaiyun.com/DevXue/article/details/104893913</link><guid>https://blog.youkuaiyun.com/DevXue/article/details/104893913</guid><author>DevXue</author><pubDate>Mon, 11 Nov 2019 06:28:55 +0800</pubDate><description><![CDATA[类型转换可以判断实例的类型，也可以将实例看做是其父类或者子类的实例。
类型转换在 Swift 中使用 is 和 as 操作符实现。
也可以用它来检查一个类型是否遵循了某个协议。

1. 为类型转换定义类层次

可以将类型转换用在类和子类的层次结构上，检查特定类实例的类型并且转换这个类实例的类型成为这个层次结构中的其他类型。

/*
这个类为任何出现在数字媒体库的媒体项提供基础功能...]]></description><category></category></item><item><title><![CDATA[Swift-枚举，枚举值匹配、遍历、关联值、原始值递归枚举]]></title><link>https://blog.youkuaiyun.com/DevXue/article/details/104893901</link><guid>https://blog.youkuaiyun.com/DevXue/article/details/104893901</guid><author>DevXue</author><pubDate>Mon, 11 Nov 2019 06:28:49 +0800</pubDate><description><![CDATA[Swift 中的枚举，不必给每一个枚举成员提供一个值。
如果给枚举成员提供一个值（称为原始值），则该值的类型可以是字符串、字符，或是一个整型值或浮点数。

1. 枚举语法

使用 enum 关键词来创建枚举并且把它们的整个定义放在一对大括号内：

enum SomeEnumeration {
    // 枚举定义放在这里
}

使用 case 关键字来定义一个新的枚举成员值：
...]]></description><category></category></item><item><title><![CDATA[Swift-内存安全，访问冲突、In-Out 参数的访问冲突]]></title><link>https://blog.youkuaiyun.com/DevXue/article/details/104893912</link><guid>https://blog.youkuaiyun.com/DevXue/article/details/104893912</guid><author>DevXue</author><pubDate>Sun, 10 Nov 2019 10:35:20 +0800</pubDate><description><![CDATA[默认情况下，Swift 会阻止你代码里不安全的行为。
例如：

Swift 会保证变量在使用之前就完成初始化，在内存被回收之后就无法被访问
并且数组的索引会做越界检查。


Swift 也保证同时访问同一块内存时不会冲突，通过约束代码里对于存储地址的写操作，去获取那一块内存的访问独占权。
因为 Swift 自动管理内存，所以大部分时候你完全不需要考虑内存访问的事情。
然而，理解潜...]]></description><category></category></item><item><title><![CDATA[Swift-嵌套类型，定义、引用嵌套类型]]></title><link>https://blog.youkuaiyun.com/DevXue/article/details/104893898</link><guid>https://blog.youkuaiyun.com/DevXue/article/details/104893898</guid><author>DevXue</author><pubDate>Sun, 10 Nov 2019 10:35:16 +0800</pubDate><description><![CDATA[枚举常被用于为特定类或结构体实现某些功能。
类似地，枚举可以方便的定义工具类或结构体，从而为某个复杂的类型所使用。
Swift 允许你定义嵌套类型，可以在支持的类型中定义嵌套的枚举、类和结构体。
要在一个类型中嵌套另一个类型，将嵌套类型的定义写在其外部类型的 {} 内，而且可以根据需要定义多级嵌套。

1. 嵌套类型实践

BlackjackCard 结构体包含两个嵌套定义的枚举...]]></description><category></category></item><item><title><![CDATA[Swift-属性，存储属性（var、let）、计算属性（getter、setter）、属性观察器、全局变量和局部变量]]></title><link>https://blog.youkuaiyun.com/DevXue/article/details/104893910</link><guid>https://blog.youkuaiyun.com/DevXue/article/details/104893910</guid><author>DevXue</author><pubDate>Sun, 10 Nov 2019 10:35:10 +0800</pubDate><description><![CDATA[1. 存储属性

一个存储属性就是存储在特定类或结构体实例里的一个常量或变量。
可以是变量存储属性（用关键字 var 定义）。
也可以是常量存储属性（用关键字 let 定义）。

struct FixedLengthRange {
    var firstValue: Int
    let length: Int
}
var rangeOfThreeItems = FixedL...]]></description><category></category></item><item><title><![CDATA[Swift-析构过程，析构原理、析构实践]]></title><link>https://blog.youkuaiyun.com/DevXue/article/details/104893916</link><guid>https://blog.youkuaiyun.com/DevXue/article/details/104893916</guid><author>DevXue</author><pubDate>Sun, 10 Nov 2019 10:35:06 +0800</pubDate><description><![CDATA[析构器只适用于类类型，当一个类的实例被释放之前，析构器会被立即调用。
析构器用关键字 deinit 来标示，类似于构造器要用 init 来标示。

1. 析构过程原理

Swift 会自动释放不再需要的实例以释放资源。
Swift 通过自动引用计数（ARC) 处理实例的内存管理。
通常当你的实例被释放时不需要手动地去清理。但是，当使用自己的资源时，你可能需要进行一些额外的清理。
...]]></description><category></category></item><item><title><![CDATA[Swift-下标，下标语法、用法、选项，类型下标]]></title><link>https://blog.youkuaiyun.com/DevXue/article/details/104893909</link><guid>https://blog.youkuaiyun.com/DevXue/article/details/104893909</guid><author>DevXue</author><pubDate>Sun, 10 Nov 2019 10:35:01 +0800</pubDate><description><![CDATA[1. 下标语法

下标允许你通过在实例名称后面的方括号中传入一个或者多个索引值来对实例进行存取。

定义下标使用 subscript 关键字，指定一个或多个输入参数和返回类型。
与实例方法不同的是，下标可以设定为读写或只读。这种行为由 getter 和 setter 实现，有点类似计算型属性：

subscript(index: Int) -&gt; Int {
    get {...]]></description><category></category></item><item><title><![CDATA[Swift-协议，属性、方法、构造器要求，协议的声明、遵循、继承、合成、扩展、默认实现、添加限制条件]]></title><link>https://blog.youkuaiyun.com/DevXue/article/details/104893893</link><guid>https://blog.youkuaiyun.com/DevXue/article/details/104893893</guid><author>DevXue</author><pubDate>Sun, 10 Nov 2019 10:34:52 +0800</pubDate><description><![CDATA[协议 定义了一个蓝图，规定了用来实现某一特定任务或者功能的方法、属性，以及其他需要的东西。
类、结构体或枚举都可以遵循协议，并为协议定义的这些要求提供具体实现。
某个类型能够满足某个协议的要求，就可以说该类型遵循这个协议。
除了遵循协议的类型必须实现的要求外，还可以对协议进行扩展，通过扩展来实现一部分要求或者实现一些附加功能，这样遵循协议的类型就能够使用这些功能。

1. 协议语...]]></description><category></category></item><item><title><![CDATA[Swift-字符串和字符，可变性、连接、插值、计算、索引、删除、比较、前缀、后缀]]></title><link>https://blog.youkuaiyun.com/DevXue/article/details/104893892</link><guid>https://blog.youkuaiyun.com/DevXue/article/details/104893892</guid><author>DevXue</author><pubDate>Sun, 10 Nov 2019 10:34:47 +0800</pubDate><description><![CDATA[1. 字符串

在 Swift 中 String 类型是值类型。
如果你创建了一个新的字符串，那么当其进行常量、变量赋值操作，或在函数/方法中传递时，会进行值拷贝。
在前述任一情况下，都会对已有字符串值创建新副本，并对该新副本而非原始字符串进行传递或赋值操作

1.1 初始化空字符串
// 两个字符串均为空并等价。
var emptyString = ""    //  空字符串字...]]></description><category></category></item><item><title><![CDATA[Swift-自动引用计数，工作机制、强引用、弱引用]]></title><link>https://blog.youkuaiyun.com/DevXue/article/details/104893907</link><guid>https://blog.youkuaiyun.com/DevXue/article/details/104893907</guid><author>DevXue</author><pubDate>Sun, 10 Nov 2019 10:34:21 +0800</pubDate><description><![CDATA[Swift 使用自动引用计数（ARC）机制来跟踪和管理你的应用程序的内存。
通常情况下，Swift 内存管理机制会一直起作用，你无须自己来考虑内存的管理。
ARC 会在类的实例不再被使用时，自动释放其占用的内存。


注意：

引用计数仅仅应用于类的实例。
结构体和枚举类型是值类型，不是引用类型，也不是通过引用的方式存储和传递。


1. 自动引用计数的工作机制

当你每次创建一...]]></description><category></category></item><item><title><![CDATA[Swift-闭包，隐式返回、尾随闭包、值捕获、逃逸闭包、自动闭包]]></title><link>https://blog.youkuaiyun.com/DevXue/article/details/104893887</link><guid>https://blog.youkuaiyun.com/DevXue/article/details/104893887</guid><author>DevXue</author><pubDate>Sun, 10 Nov 2019 10:34:11 +0800</pubDate><description><![CDATA[闭包

闭包可以捕获和存储其所在上下文中任意常量和变量的引用，被称为包裹常量和变量。
Swift 会为你管理在捕获过程中涉及到的所有内存操作。

全局和嵌套函数实际上也是特殊的闭包，闭包采用如下三种形式之一：

全局函数是一个有名字但不会捕获任何值的闭包。
嵌套函数是一个有名字并可以捕获其封闭函数域内值的闭包。
闭包表达式是一个利用轻量级语法所写的可以捕获其上下文中变量或常量值的匿...]]></description><category></category></item><item><title><![CDATA[Swift-不透明类型，和协议类型的区别]]></title><link>https://blog.youkuaiyun.com/DevXue/article/details/104893891</link><guid>https://blog.youkuaiyun.com/DevXue/article/details/104893891</guid><author>DevXue</author><pubDate>Sun, 10 Nov 2019 10:33:54 +0800</pubDate><description><![CDATA[具有不透明返回类型的函数或方法会隐藏返回值的类型信息。
函数不再提供具体的类型作为返回类型，而是根据它支持的协议来描述返回值。
在处理模块和调用代码之间的关系时，隐藏类型信息非常有用，因为返回的底层数据类型仍然可以保持私有。
而且不同于返回协议类型，不透明类型能保证类型一致性 —— 编译器能获取到类型信息，同时模块使用者却不能获取到。

1. 不透明类型解决的问题

假设你正在写...]]></description><category></category></item></channel></rss>