1 //用playground运行即可 2 import UIKit 3 4 var str = "Hello, playground" 5 6 ...
分割控制器UISplitViewController 功能:它也是ipad的一个新特性,在屏幕上可以同时显示两个控制器,左边一个,右边一个;左边的为主控制器,右边的为详细控制器,主控制器可以根据需要显示或隐藏...介绍 Split View通常只是一个基本元素,它填满整个屏幕,不可能把Split View放到其他什么的内部,一般情况下是提供给整个app的。...Split View有两个ViewControllers,一个左侧一个右侧,左侧叫Master,右侧叫Detail。...SplitViewController有 一个property叫做ViewControllers,它是一个数组,这个数组有两个元素,左侧和右侧,左侧是元素0,右侧是元素1 @property (nonatomic...,一个为主控制器类MasterViewController,一个为详细控制器类DetailViewController 2、导入几张素材图片,用来在详细控制器中显示。
2021-08-09:给定一个有正、有负、有0的数组arr,给定一个整数k,返回arr的子集是否能累加出k。1)正常怎么做?2)如果arr中的数值很大,但是arr的长度不大,怎么做?...,可能为负,可能为0 // 自由选择arr中的数字,能不能累加得到sum // 分治的方法 // 如果arr中的数值特别大,动态规划方法依然会很慢 // 此时如果arr的数字个数不算多(40以内),哪怕其中的数值很大...,分治的方法也将是最优解 func isSum4(arr []int, sum int) bool { if sum == 0 { return true } if...,包含左部分一个数也没有,这种情况的,leftsum表里,0 // 17 17 for l, _ := range leftSum { if _, ok := rightSum...形成的累加和是pre // arr[i...end - 1] end(终止) 所有数字随意选择, // arr[0...end-1]所有可能的累加和存到ans里去 func process4(arr
效果.gif 需求分析 基于官方MasterDetail模板,官方写了很多复杂的coredata逻辑,在此基础上快速开发简单的日记本程序。...M-D.png 使用swift和coredata ? 选择语言和coredata.png 添加数据库 官方给数据库添加了一个时间戳字段,我们再添加一个内容字段就可以了 ?...fatalError("Unresolved error \(nserror), \(nserror.userInfo)") } } 在navBarRight上增加一个按钮用于保存...DetailViewController controller.detailItem = object self.navigationController?....DetailViewController controller.detailItem = newEvent self.navigationController?.
屏幕截图 使用UIPageViewController去实现这种滚动分页的控制,我们可以忽略比如view的复用,scroll的各种计算,我们只需要少量的代码就可以实现一个高性能的分页控件 我们只需要实现...DetailViewController)?....DetailViewController)?....previewController(formPage: index + 1) } 这两个代理,一个是向前翻页,一个是向后翻页 我们需要注意的是,我们不能用一个属性来计算将要展示的页面,因为有可能翻页时两个代理都会被调用...,然后再通过当前的页码来控制标题的变化,这样一个简单的分页控件就完成了 Demo地址:https://github.com/cdcyd/CommonControlsCollection 我的博客即将搬运同步至腾讯云
本系列文章都是以有OC基础来写的,所以注释不会写太多,对基础不够了解的同学可能不太适合,另外本系列文章不是以教程式的形式来写,是记录学习过程的,所以不会有多少讲解 OK,承接上一篇文章,这次开始UITableView...,是没有宏这个概念的,但是直接创建一个文件,在里面直接定义常量,别的文件也是可以访问和使用的(并且不需要导入):如图创建一个common文件 ?...ImageView和一个Label,虽然数据是死的,但是在Swift中,另外一个类是可以直接访问另一个类中的变量的(如果没做任何保护的话),所以我们在配置cell的时候是可以直接赋值的,这里就不弄了,然后我们看创建表视图那一块...学了这么几天,我发现Swift还是比较容易入手的,下篇文章我会用一个小的项目,本人是做室内地图SDK的,这次的小项目是仿我OC写的SDK Demo,使用Swift和OC混编,集成百度地图SDK和自己的室内...点产品左右滑找到SDK下载就行了,里面有OC版的demo,有室内需求可以联系我们公司!
在 Swift 中,我们可以继续使用 XCTest 来进行测试,而 Swift 的 mock 和 stub 的处理,我们甚至不需要再借助于第三方框架,而使用 Swift 自身可以在方法中内嵌类型的特性来完成...对于用户来说,app 的功能和 UI 界面是否正确是判断这个 app 是否合格的更为直接标准。而传统的单元测试很难对 app 的功能或者 UI 进行测试。...关于这些 UI 测试框架的更详细的介绍,可以参看 objc 中国上的 UI 测试和截图测试两篇文章。不过这些方法有一个共同的特点,那就是配置起来十分繁琐,使用上也有诸多不便。...我们需要等一段时间,让新的 DetailViewController 出现。...Query 的执行是延迟的,它和最后我们得到的 XCUIElement 并不是一一对应的。和 NSURL 与请求到的内容的关系类似,随着时间的变化,同一个 URL 有可能请求到不同的内容。
)size withTransitionCoordinator:(id)coordinator { // 1.判断是否是横屏...(默认控制器有多大就显示多大)(120, 44 * 3) UIPopoverController的方法popoverContentSize 内容控制器中设置的方法 self.preferredContentSize...:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated; 情景② 在导航控制器的View上添加个按钮,点击,弹出一个UIPopoverController...:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated; 2>控制器内,有自己的逻辑结构(和正常控制器一样可以跳转返回等) UIPopoverController...1>masterViewController(主要控制器) 2>负责展示主要的菜单内容 b.detailViewController 1>detailViewController(详情控制器) 2>负责展示详细内容
属于深拷贝(deep copy) 值类型: 比如结构体,枚举,是在栈空间上存储和操作的 引用类型 引用类型只会使用引用对象的一个"指向"; 赋值给var、let或者给函数传参,是将内存地址拷贝一份,类似于制作一个文件的替身...required是强制子类重写父类中所修饰的初始化方法比较 Swift和OC中的 protocol 有什么不同?...可以用于值类型,结构体,枚举;swift 和OC 中的自省 有什么区别?...自省在OC中就是判断某一对象是否属于某一个类的操作,有以下2中方式 在 Swift 中由于很多 class 并非继承自 NSObject, 故而 Swift 使用 is 来判断是否属于某一类型, is...规则: subscript的语法类似于实例方法、计算属性,本质就是方法(函数) 类、结构体、枚举都可以定义初始化器 类有2种初始化器: 指定初始化器(designated initializer)、便捷初始化器
一、引用 引用是iOS内存管理中的重要知识点,总所周知,iOS对象的内存管理是使用引用计数来表示的。一个对象只有在它的所有强引用都被释放后才能被回收。因此,一个对象的生命周期取决于其强引用的所有者。...您可能想要引用一个对象而不妨碍对象本身的回收。对于这种情况,您可以获取一个“弱”引用。弱引用是通过存储一个指向对象的指针创建的,而不是保留对象。...弱引用:不会修改引用计数,不论有多少弱引用,该释放就释放,而且weak指针在被释放的时候还会被置为nil,防止野指针的出现 weak 引用原理: 1、初始化时:runtime会调用objc_initWeak...函数,初始化一个新的weak指针指向对象的地址。...打破循环引用很简单,将其中一个指针改为弱引用 三、NSTimer引起的循环引用 @interface DetailViewController () @property (nonatomic, weak
一、Swift中的元组(Tuple) 元组类似于C语言中的结构体(Struct),用来存储一组相关的值,并且允许这些相关值的类型不同。元组一般在数组返回多个值的时候使用。 1....二、Swift中可选类型(Optional) 可选类型是Swift中新的类型,可选类型使得Swift的数据类型更为安全,可选类型可以说在Swift中扮演着重要的角色,它使得你的代码更为健壮,下面将会给出可选类型的使用场景...可选值,用大白话解释就是不确定这个变量或者常量中是否有值(有可能为nil),所以这个变量或常量的值是可选的。下面对optional进行详细介绍。 ...下面把一个数字字符串转换成整数,然后使用一个变量去接收,然后去判断这个变量是否为空,不为空就强制打开进行使用,下图转换后不为nil就会被强制打开然后使用。 ? ...来打开该可选值,然后再调用该类的方法。?号就是告诉编译器你不知道该类是否有该调用的方法,如果有就调用,如果没有就忽略。如下实例所示: ?
,因此如果其中有一个为假,那么后面的条件就不用计算了,这个逻辑类似于我们常见的 && 运算中的逻辑短路。...哦,对了,例子缩水的问题其实也是有办法解决的,哪有 Scala 解决不了的问题呢。。。...{ condition in condition() } 是 Swift 当中的 Lambda (在 Swift 当中称为 Closure,其实是一个东西),完整的写法是 { (condition: (...Lambda 表达式包装对 returnFalse 函数的调用;后面的两个参数直接使用函数名传入,这类似于 Kotlin 当中的函数引用的用法。...这么看来 Swift 也可以通过传入函数来实现延迟求值。有了前面 Scala 的经验,我们就不免要想,函数参数延迟求值的写法上能否进一步简化呢?答案是能,通过 @autoclosure 来实现。
我们从 Optional中得到的一个好处是,它提供了一组更高阶的函数,这些函数可以被链接起来,不必担心值是否存在。...检查是否为空代码的行数与为完成任务而编写的代码数量相当。...例如,如果我们在内存中已经有一个用户集合,我们想在进入存储库之前搜索这个集合,那么我们可以做以下工作: Optional.stream允许将可选的转换为至多一个元素的流。...Swift可选实际上是一个枚举,它有两种状态:none和some,其中none表示nil, some表示一个已wrapped的对象。...许多对选项的调用可以链接在一起,因此命名为可选链接。这样的表达式总是返回一个可选项,如果链中任何可选项都不包含,则该表达式将包含结果对象或none。因此,必须再次检查可选链的结果是否为nil。
OC中的block类似于匿名函数,闭包是用来定义函数, 同时闭包可以嵌套和作为参数传递。 在 Swift 中,函数也只不过是一种特殊的闭包。...Swift 中的闭包有很多优化的地方: 1 根据上下文推断参数和返回值的类型 2 从单行表达式闭包中隐式返回 可以省略return 3 可以使用简化的参数如 $0 $1 意为从0或者1开始 4 提供了尾随闭包的语法...在Swift中,如果在某个类中定义一个属性,那么这个属性必须要初始化,否者会报错, 如果暂时不想初始化,那么可以在后面写上一个 ?...闭包的循环引用问题 在Swift开发中,有一个原则就是能不写self就不写self,但是在闭包中必须写上self; 这是因为闭包是用来保存一段代码,而且系统也不知道这段代码具体的调用时间, 所以为了保证闭包中的对象不被释放...() 中要有个问号呢 原因是在OC的代码中, 用respondsToSelector()方法来判断是否实现了方法。 而在swift 中就直接可以用 ?
Wrapper 更贴切它的实际用法和含义,加上 Delegate 这个词在 Swift 当中(或者说更早的 Objective-C 当中)已经有了非常确切的含义,因此改成了Property Wrapper...说来也有趣,在它的设计文档中还特意 "diss" 了 Kotlin 的属性代理的语法设计:单独为了属性代理搞了一个 by 关键字实在是有些重,在其他场景下也不太好复用,于是 Swift 的属性包装器采用了与...这个 projectedValue 实际上也是一个属性包装器,它的类型是 Binding,Binding 这个属性包装器的作用比较直接,类似于我们前面介绍 Kotlin 的属性代理时提到的...但可以确定的是,Kotlin 当中没有 projectedValue 这样的特性,即便我们在前面模拟 Swift 声明的 PropertyWrapper 接口中添加这样的属性,我们也没有直接的类似于 $...Kotlin 的规划和提议方面也暂时没有看到有类似的设计,如果我们想要在 Kotlin 当中也实现类似于 projectedValue 的功能,也许可以借助一下 Kotlin 编译器插件来完成。
类似于 switch 语句,Swift 2 的错误处理模型也是要求 完备 的,意味着你必须要处理全部可能的错误。...这就是为什么我们要包含最后一个不带任何匹配模式的 catch 如果你想学习更多的关于 Swift 的错误处理,我推荐你去读 Apple 的官方文档 No More println...nil { // iOS 8 or up } else{ // Earlier iOS versions } 这是一种检查类是否存在的方式...2 的官方简介,这里有很多我这篇文章没有提到的内容,比如 Markdown 格式的注释等,你也可以去观摩 WWDC 视频 去学习更多 Swift 2 的内容。...在此刻,仍然有相当多的公司将 Objective-C 作为 iOS 开发的主力语言,或许你也正使用 OC。但我强烈地相信 Swift 才是未来之路。
map(\.nickname) } 关于这个示例需要注意的有: refreshPlayers 现在是一个 async 函数。...: GameSession func refreshPlayers() async { ... } } 关于这个示例我们应该注意: 声明一个类为 actor,类似于给一个类一个私有队列,并通过该队列同步所有对其私有状态的访问...我们静态地知道我们是否处于可以安全地访问 actor 属性的上下文中,如果不能,编译器将负责切换到这种上下文中。 在上面,我们展示了一个 actor 类,其中包含一组紧密封装的属性和代码。...Async handlers:引入了将同步 actor 函数声明为异步处理程序的功能。这些函数在外部的行为类似于同步函数,但在内部的处理则类似于异步函数。...Swift 的长期目标是让 Swift 默认保证 actor 隔离。 一个 actor 类 是一个引用类型,其每个实例都是一个单独的 actor。
LxTabBarController - 改变了原生tabbar切换标签时的生硬效果,并加入滑动切换手势(有和界面上的其它手势发生冲突的风险,可根据具体项目予关闭),swift版本。...类似美团的下拉菜单 - 类似美团的下拉菜单,源码推荐说明。 类似美团的下拉选项 - 类似于美团,大众点评的下拉菜单选项,code4app代码,评论代码有瑕疵。...CRMediaPickerController - 一个简单易用的图片/视频选择器.1。可同时选择照片和视频。2.挑选范围有相机,相机胶卷,照片库以及最近拍摄的照片和视频.3。...ASDayPicker - 适用于iOS(iPhone)的日期选择器(时间选择器),类似于Calendar app的周视图。 今天扩展 - 用纯代码构建一个Widget(今天扩展)。...HWAnimationTransition_Swift ,HWAnimationTransition_OC - 类似于格瓦拉启动页中的放大转场动画(objective-C && Swift)。
那么Swift能否替代Objective-C成为新的王者?现有的项目是否需要迁移?我们是否应该马上开始学习Swift呢?...但是类似于“变量声明时就有初始值”的特性在JavaScript,C#等多种现代语言中早已实现了。...Swift语言的学习成本并不像媒体上宣传得那么低。所以我们还需要从第四个方面——生态环境方面进行考察。 生态环境是一个比较抽象的概念。这里我们把生态环境简化为2个问题: 是否有很多开源工程可以借鉴?...有了问题是否能快速找到答案?...由此可以看出,Swift有一群热情非常高的爱好者,尽管爱好者绝对数量可能不多,但是加速的趋势很大。后续的发展是非常值得期待的。 第二个问题“有了问题是否能快速找到答案?”
在我看来,反正开始速度足够慢,因此之后会有很大的提升空间(围笑)。 官方对于这次的速度提升给出的数据是大约3倍,但是这是基于i7架构的MacbookPro上的,而且编译速度和项目文件组织有很大关系。...Reduce Code Size 减少代码体积 有时候,开发者会介意代码量,这关系到app是否可以在蜂窝网络下下载(蜂窝网络下有100MB的文件大小限制)。...Collection of Enum Cases 在Swift4时代,如果你想遍历一个枚举,你需要定义一个变量,在变量里列出所有枚举。如下所示: ?...Synthesized Equatable and Hashable Equatable和Hashable合成 在Swift4以及之前的版本,想比较两个结构体是否完全相等,要怎么做呢?...没完,苹果还提供了随机打乱顺序的方法,名字也很有意思,叫shuffled,类似于重新洗牌,将元素打乱。
领取专属 10元无门槛券
手把手带您无忧上云