Swift
文件夹__iOS
这个作者很懒,什么都没留下…
展开
-
[Swift 开发] async/await异步编程封装Alamofire
Alamofire 是一个强大的网络请求库,可以轻松实现异步编程。本文将介绍如何使用 async/await 封装 Alamofire,以实现更加优雅的异步编程。总结一下,本文介绍了如何使用 async/await 封装 Alamofire,以实现更加优雅的异步网络请求。通过使用 async/await,可以使得网络请求变得更加简洁、优雅,让开发者更加轻松地实现异步编程。然后,我们封装一下逻辑层,模拟了3个网络请求,其中包括(无参get, 有参get,无参post )首先,我们用Alamofire的。原创 2023-02-24 17:11:18 · 1535 阅读 · 0 评论 -
[Swift 开发] 解决深copy浅copy (isKnownUniquelyReferenced(_:))
浅拷贝(copy):是对于一个对象的顶层拷贝,拷贝父对象,不会拷贝对象的内部的子对象深拷贝(deepcopy):是对于一个对象所有层次的拷贝(递归),完全拷贝了父对象及其子对象原创 2023-01-12 16:12:12 · 1155 阅读 · 0 评论 -
[SwiftUI 开发] Widget 小组件
小组件可以在主屏幕上实现内容展示和功能跳转。系统会向小组件获取时间线,根据当前时间对时间线上的数据进行展示。点击正在展示的视觉元素可以跳转到APP内,实现对应的功能。小组件是一个独立于 App 环境(即 App Extension),小组件的生命周期/存储空间/运行进程都和 App 不同。App Extension 可以将自定义功能和内容扩展到应用程序之外,并在用户与其他应用程序或系统交互时向用户提供。例如,您的应用可以在主屏幕上显示为小部件。原创 2023-01-05 16:12:24 · 5574 阅读 · 3 评论 -
[Swift 开发] 异步结果作为函数返回值
当您将异步结果作为函数返回值时,函数标记为异步,您就允许它挂起。当一个函数挂起自己时,它也会挂起它的调用者。所以它的调用者也必须是异步的。 为了指出异步函数中它可能挂起一次或多次的位置,使用了Semaphore(信号量) 关键字。 当异步函数被挂起时,函数线程会被阻塞。 当异步函数恢复时,从它调用的异步函数返回的结果流回原始函数,并从上次停止的地方继续执行。// 惯例来个Person类class Person { class func waitResult() -> [Int] {原创 2022-04-12 15:02:21 · 2977 阅读 · 0 评论 -
[Swift 开发] 一分钟会用Web Socket
一般网络请求时,只能client发请求,server回答。server不能主动给client发消息,Web Socket就能解决这个问题。1.导入框架import Starscream2.初始化对象var socket: WebSocket?var isConnected = falselet serverUrl = "ws://82.157.123.54:9010/ajaxchattest"var request = URLRequest(url: URL(string: .原创 2021-12-03 14:09:50 · 1130 阅读 · 0 评论 -
[Swift 开发] 异常俘获 Do_Try_Catch
定义抛出Throw类型表示和抛出错误 在 Swift 中,错误由符合 Error 协议的类型值表示。这个空协议表明一个类型可用于错误处理。Swift 枚举特别适合对一组相关的错误条件进行建模,关联的值允许传达有关要传达的错误性质的附加信息。例如,您可以通过以下方式表示在游戏中操作自动售货机的错误条件: enum VendingMachineError: Error { case invalidSelection case insufficientFun翻译 2021-11-26 10:42:02 · 308 阅读 · 0 评论 -
[Swift 开发] 判断俩数组是否相等[并集、交集、差集]
两个数组要进行数据的比较,最好先转换成集合.let set1 = Set([1, 2, 3, 4]) //集合转数组let array = Array(Set1)//数组转集合let set2 = Set(array)初始化俩集合数组里的对象如果是值类型可以直接比较,如果是饮用类型要实现Hashable或CustomDebugStringConvertible协议struct perpon:Hashable, CustomDebugStringConvertible{ v原创 2020-12-14 19:55:00 · 4576 阅读 · 0 评论 -
[Swift 开发] map、flatMap、compactMap的区别
一维数组的使用let numbers = [1, 2, 3, nil, 4, 5, 6, 7]let maped = numbers.map { $0 }let flatMapped = numbers.flatMap { $0 }let compactMapped = numbers.compactMap { $0 }print(maped)//[Optional(1), Optional(2), Optional(3), nil, Optional(4), Optional(5), Op原创 2020-11-18 11:27:40 · 1734 阅读 · 0 评论 -
[Swift 开发] 尾递归
尾递归如果一个函数中所有递归形式的调用都出现在函数的末尾,我们称这个递归函数是尾递归的。当递归调用是整个函数体中最后执行的语句且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归。尾递归函数的特点是在回归过程中不用做任何操作,这个特性很重要,因为大多数现代的编译器会利用这种特点自动生成优化的代码。错误实例func sum(_ n: Int) -> Int { if n == 0 { return 0 } return n + s.原创 2020-10-29 14:12:53 · 205 阅读 · 0 评论 -
[Swift 开发] 01背包问题
有N件物品和一个容量是V的背包。每件物品只能使用一次。第i件物品的体积是vi,价值是wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。滚动数组解法每件物品只能选一次,对于每种物品,我们有两种选择1.不选 -> dp[i][j]=dp[i-1][j]等于选前i-1个物品,空间为j情况下的最优解2.选 -> dp[i][j]=dp[i-1][j-v[i]]+w[i]如果选的话,前i-1个物品的体积最多为j-v[i]...原创 2020-08-08 17:10:52 · 305 阅读 · 0 评论 -
[Swift 开发] 五大常用算法--回溯算法
概念:回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。示例:八皇后算法//棋盘格子的范围let max_num = 8//数组作为棋盘var chessBoard = [[Int]]()/原创 2020-08-08 14:05:53 · 315 阅读 · 0 评论 -
[Swift 开发] &&和||运算符优先级
print(true || false && false)print((true || false) && false)print(true || (false && false))第一行:看不出谁的运算级谁高第二行:把||用括号括起来,增强或优先级第三行:把&&用括号括起来,增强与优先级根据第二行和第三行的输出结果判定&&和||运算符优先级打印结果:truefalsetrue可以看..原创 2020-08-07 16:21:52 · 662 阅读 · 0 评论 -
[Swift 开发] 读取和修改二进制某一位的数据
let initialBits: UInt8 = 0b00001111//修改成什么值let on_off = 0//修改第几位数据var location = 11.读取数据var result = initialBits >> location & 1// 转化为字符串var stringOfInvertedBits = String(result, radix: 2)print(stringOfInvertedBits)2.修改某一位的数据v.原创 2020-07-01 16:15:22 · 684 阅读 · 0 评论 -
[Swift 开发]Xcode多行文本输入和编辑
例如有这么一个类,要实现NSCopying协议class ClassA: NSCopying { required init() { } var moneys : String! var modify_money : String! var cost_name : String! var house_id : String! var memo : Str原创 2020-05-21 15:12:23 · 784 阅读 · 1 评论 -
[Swift 开发] Message from debugger: Terminated due to signal 9
Xcode Crash报错提示Message from debugger: Terminated due to signal 9原因:1 内存使用过高2 CPU使用过高当内存或者CPU使用过高时,系统会杀死进程原创 2020-04-12 09:18:01 · 7128 阅读 · 2 评论 -
[Swift 开发] Bluetooth 蓝牙连接状态
判断蓝牙连接状态我们可以使用CBCentralManagerDelegate- (void)centralManagerDidUpdateState:(CBCentralManager *)central;Bluetooth连接状态的枚举值public enum CBManagerState : Int { case unknown // 蓝牙状态未知...原创 2020-01-20 16:51:01 · 1783 阅读 · 0 评论 -
[Swift 开发] 时间差,耗时
let startTime = CFAbsoluteTimeGetCurrent() //要执行的代码 //... let endTime = CFAbsoluteTimeGetCurrent() debugPrint("代码执行时长:%f 毫秒", (endTime - startTime)*1000)...转载 2019-12-18 15:15:54 · 721 阅读 · 0 评论 -
[Swift 开发] 遍历二叉树(前序、中序、后序、层序)
创建二叉树模型//用的是递归枚举的方式indirect enum BinaryTree { case node(_ l:BinaryTree, _ v:String, _ r:BinaryTree) case empty}初始化数据let nodeI = BinaryTree.node(.empty, "I", .empty)let nodeG = Binar...原创 2019-12-18 10:43:18 · 429 阅读 · 0 评论 -
[Swift 开发] sort非稳定排序
sort排序,如果两个对象的值相等,排序就会出现问题。上个例子给大家看看。老规矩先创建个person类class Person { var name = "" var id = 0 init(i:Int,n:String) { name = n id = i }}初始化对象数组,数组中的id都相同,设置为1v...原创 2019-11-19 14:53:25 · 218 阅读 · 0 评论 -
[Swift 开发] 银行取款排队模拟
银行取款排队模拟 假设银行有4个柜台,假设某天有200位客户来办理业务,每个客户到达银行的时间和业务处理时间分别用两个数组arrive_time 和 process_time 来描述。 请写程序计算所有客户的平均等待时间,假设每个客户在去到营业部之后先拿号排队,然后在任意一个柜台有空闲的时候,号码数最小的客户上去办理,假设所有的客户拿到号码之后不会因为银行众所周知的慢而失去耐心走掉。 首...原创 2019-01-30 15:33:32 · 295 阅读 · 0 评论 -
[Swift 开发] 获取子网掩码
func getIfaNetmask() -> String { var ifaNetmask = "" // Get list of all interfaces on the local machine: var ifaddr : UnsafeMutablePointer<ifaddrs>? = nil ...原创 2019-06-20 11:21:21 · 469 阅读 · 0 评论 -
[Swift 开发] 柯里化 (Currying) 应用场景
柯里化的代码,看起来更加的简洁优雅,提高代码复用性。例如我们要用班级和姓名来拼接一个字符串。func conventionFunc(_ calssName: String,name:String) -> String { return "\(calssName) (\(name))"}let aa = conventionFunc("大班", name: ...原创 2019-07-22 10:17:07 · 211 阅读 · 0 评论 -
[Swift 开发] viewDidLoad()什么时候被调用
class classA:UIViewController{ var name :String? override func viewDidLoad() { print("viewDidLoad()") }}创建一个UIViewController的classA,override func viewDidLoad()什么时候会被调用。首先被...原创 2019-08-06 09:30:27 · 1434 阅读 · 0 评论 -
开发命名规则
命名规则:模块_类别_功能_状态例如:导航_按钮_搜索_默认 nav_button_search_default按钮状态【选中】:selected按钮状态【无法点击】:disabled按钮状态【点击时】:highlight按钮状态【默认】:default按钮状态【一般】:normal按钮状态【按下】:pressed收藏:co转载 2017-06-01 13:23:25 · 371 阅读 · 0 评论 -
[Swift 开发] NSMutableDictionary() 内存溢出 (33554432 、 2^24、innodb_additional_mem_pool_size )
我们在使用NSMutableDictionary时候,有大量的数据要操作。 假设千万级别的。咱们做一个小Demo let dic = NSMutableDictionary() for i in 1...2<<24{ dic["\(i)"] = "\(i)" if dic.count != i...原创 2019-01-02 17:13:56 · 555 阅读 · 0 评论 -
[Swift 开发] 数组 环形缓存区
经过测试发现Swift数组并不是环形缓存区。 var aa = [0]Duration.startMeasurement("Tough Math1")for i in 0...100000{ aa.append(i)}Duration.stopMeasurement()输出:Tough Math1 took: 1.44msvar aa = [0]Du...原创 2018-12-25 15:36:47 · 230 阅读 · 0 评论 -
[Swift 开发] Swift高阶函数:Map,Filter,Reduce
1: map用于将每个数组元素通过某个方法进行转换。 例如: 我们用一个Int类型数组存储商品金额,想把每个金额后面添加一个字符“.00元”,把数组转成字符串数组let numbers2 = [10, 15, 99, 66, 25];let totalNumber2 = numbers2.map({money in "(money)元"})print(totalNumb原创 2016-04-14 14:36:20 · 1132 阅读 · 0 评论 -
[IOS 开发] block运行结束,得到一个通知.
有一个需求,当block运行结束的得到一个通知.可以用俩block来实现.//具体的方法func showAnimated(animated:Bool, block:dispatch_block_t, completion:dispatch_block_t){ block() completion() }//调用showAnima原创 2016-04-08 11:18:04 · 423 阅读 · 0 评论 -
[IOS 开发] 获取设备UUID
UIDevice.currentDevice().identifierForVendor?.UUIDString原创 2016-04-08 11:01:14 · 884 阅读 · 0 评论 -
[IOS 开发] 求两点之间的距离
平面直角坐标系中编辑设A(X1,Y1)、B(X2,Y2),则,或者∣AB∣=∣X1-X2∣secα=∣Y1-Y2∣/sinα,其中α为直线AB的倾斜角,k为直线AB的斜率。 //假设两个点p1和p2. let p1 = (x:50.0,y:50.0) let p2 = (x:100.0,y:100.0)原创 2016-03-25 12:55:06 · 5474 阅读 · 0 评论 -
[IOS 开发] @IBDesignable @IBInspectable
iOS8新特性IBDesignable/IBInspectable,可以直接在XIB或者Storyboard中直接,设置UI类的属性。例如:UIView.layer.borderWidth、borderColor、cornerRadius这些属性在XIB上是不能直接设置的,但是IBDesignable/IBInspectable,利用运行时机制,就可以把这些属性映射到XIB上了,同时我们UI类转载 2015-11-19 11:25:22 · 422 阅读 · 0 评论 -
[Swift 开发] Swift UIScrollView
马大哈CEOswift UIScrollView//// ScrollViewController.swift// UIControlDemo//// Created by on 14/12/1.// Copyright (c) 2014年 马大哈. All rights reserved.// import UIKit class Scr转载 2015-01-06 09:28:09 · 1089 阅读 · 0 评论 -
[Swift 开发] swift支持多线程操作数据库类库-CoreDataManager
类库方法 获取数据executeFetchRequest(request:)同步获取数据 var request: NSFetchRequest = NSFetchRequest(entityName: "MonkeyEntity") var myMonkeys:NSArray? = CoreDataManager.shared.executeFetchReques转载 2015-02-04 16:27:38 · 818 阅读 · 0 评论 -
LINQ教程
在说LINQ之前必须先说说几个重要的C#语言特性一:与LINQ有关的语言特性 1.隐式类型 (1)源起 在隐式类型出现之前, 我们在声明一个变量的时候, 总是要为一个变量指定他的类型 甚至在foreach一个集合的时候, 也要为遍历的集合的元素,指定变量的类型 隐式类型的出现, 程转载 2015-01-08 09:59:51 · 356 阅读 · 0 评论 -
swift IOS 视图控制器 UIButton UILabel 控件使用
一.创建Swift 项目,第一章说过。不在赘述二.创建一个视图控制器类,如图起个名字即可在创建的类中写如下代码(有注释)//// TestContcoller.swift// TestController//// Created by zhangbiao on 14-6-10.// Copyright (c) 2014年转载 2014-11-07 14:02:31 · 457 阅读 · 0 评论 -
swift 第一个IOS应用程序
第一个IOS应用程序开发一.准备工作:(1)Mac OS X操作系统 10.9.3,(2)Xcode6.0,暂时我的Bt版本(有意外退出,和代码提示不全等现象)二.本节涉及内容:(1)变量和常量、函数、? !等符号的意义,简单的输出,IOS项目HellowroId三.开始:在这里就直接创建IOS项目了,在开转载 2014-11-07 13:59:59 · 445 阅读 · 0 评论 -
[Swift 开发] UICollectionView的用法
//加上UICollectionView的代理final class V2: UIViewController,UICollectionViewDelegate,UICollectionViewDataSource { private var collectionView: UICollectionView? private var array: [Int] = []原创 2016-04-15 17:18:21 · 384 阅读 · 0 评论 -
[Swift 开发] 协议扩展(protocol Extension)
protocol 菜价 { func 普通菜价() -> Double} struct 白菜:菜价 { func 普通菜价() -> Double { return 2.5 } } struct 黄瓜:菜价 { fun原创 2016-04-29 16:40:44 · 600 阅读 · 0 评论 -
[Swift 开发] 有效性检查
if #available(iOS 8, *){ let url = NSURLQueryItem() }else{ //ios老版本 }原创 2016-04-29 16:53:38 · 550 阅读 · 0 评论 -
[IOS 开发] 对象方法内存是如何分配的
在程序编译时,系统会首先检测出程序中用到的所有的类型,CLR会在内中分配一块内存来保存Class中使用到的每一个方法(不是方法的实现),存放的是一个地址。当开始调用其中的某一个方法时,根据这个地址可以在CLR分配的用于保存方法的内存中找到我们想要调用的方法,然后动态的编译。我们可以看到一个关键点,对象方法在对象创建之前就已久被分配了内存空间。所以对象方法的内存分配和管理和对象是没关系的。...原创 2018-09-07 17:19:30 · 866 阅读 · 0 评论