首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

成为一名优秀 Swift 开发人员 10 个小技巧

使用 Protocol Protocol Swift 中可以做很多事情。使用协议,我们可以设计软件组件行为,使其符合特定实现。...此外,通过代码导航可以导航时更好地控制共享参数和特定行为。还可以避免 Storyboard 变得一团糟。 5. 项目中集成最热门第三方库 尽量不要重新发明轮子。...为项目选择正确库是一项有意思工作,大多数情况下使用基本库就正确做法。这可以你专注于特定应用程序特定功能,而不是常见功能上浪费时间。...使用扩展并合理使用它们来创建公共库 我很喜欢 Swift 扩展。使用 Objective-C 时,我总是情愿地使用继承。当然这并不总是错误,正确使用子类也不会出错。...开发文档中,通知是控制器与模型或服务之间实施通信可同步模式正确方法,我项目中经常使用 Notification Center,基本上实现了观察者模式,并应用程序带有更多响应式元素。

2.3K40

Xcode:处理故事板更好方式 享受Interface Builder提示和技巧

对于那些对使用Interface Builder犹豫决的人来说,这可能会成为一个交易破坏者。 另一方面,许多开发人员构建具有复杂导航功能大型多屏幕应用程序时仍然会遇到一些界面问题。...否则,当您尝试创建对此故事板引用时,应用程序将崩溃。...但即使您在单个Storyboard中有多个viewControllers,使用seguesviewControllers之间导航也许不是一个好主意: 你需要为每个segue命名,仅此一个就容易出错。...在这种情况下,从按钮拖动到“退出”出口是期望代码已经项目中。 通常,当您为按钮创建动作插座时,它会将代码放在拥有该按钮同一个类中。...对于Unwind Segues,您需要在目标视图控制器中编写代码。 prepareForUnwind方法所有缺点prepareForSegue方法(见前面的建议) 什么是更简单方法?

1.4K30
您找到你想要的搜索结果了吗?
是的
没有找到

AVKit框架详细解析(四) —— 基于AVKit 和 AVFoundation框架视频流App构建

下载好材料打开 TravelVlogs.xcodeproj 并转到 VideoFeedView.swift。 注意:视频可能无法模拟器中播放。 真实设备上运行该应用程序将缓解该问题。...构建并运行该项目,您将看到一个应用程序,该应用程序已经设置了一个充满潜在视频表格,供您观看。 您目标是在用户点击其中一个单元格时显示视频播放器。 1....如果你完全不熟悉 KVO,这里有一个简单解释:基本思想是你特定属性值发生变化时注册通知。 在这种情况下,您想知道播放器 currentItem 何时发生变化。...但是,您使用过多少次启动无声视频但关闭音乐应用程序? 如果您从未体验过这种第一世界讽刺,请插入耳机......哦,对不起,现在版本:蓝牙连接您耳机。 打开一些音乐,然后运行该应用程序。...您还指定您应用程序使用音频进行“电影播放”,并且您可以将声音与来自其他来源声音混合。 构建并运行,开始备份音乐并再次启动应用程序。 您现在拥有一个视频应用程序您可以自由地成为自己船船长。

6.9K10

架构之路 (七) —— iOS AppSOLID原则(一)

由于您目标是学习如何改进现有代码,因此本 SOLID 教程假设您已经掌握了 Swift和 iOS 基础知识。 打开入门项目。...尝试自己添加一些条目: 该应用程序起作用了,但不是最佳状态,也遵循 SOLID 原则。 您审核项目以识别其缺点之前,您应该了解这些原则是什么。...设计将在代码中不同位置使用协议时,最好将该协议分解为多个较小部分,每个部分都有特定作用。这样,客户端只依赖于他们需要协议部分。 5....编写干净且有组织代码是一个总能得到回报目标。如果你说,“我稍后会清理它”,当那个时刻到来时,事情通常会太复杂而无法真正清理。 代码中使用设计模式为看似复杂问题提供了简单解决方案。...另一个可以改善您编写应用程序方式有趣概念是Defensive Programming。 这是关于代码预测可能会出错地方,这样您应用程序就不会脆弱,并且收到意外输入时不会崩溃。

4.7K10

Swift开源项目-单糖

说明 因为公司使用是 Objective-C 开发 app,没有使用 swift 来开发,所以决定自己研究 Swift,研究 Swift 时间不长,对于 Swift 基本语法有了大致了解,但是对有些概念和语法还是理解不深...,所以决定模仿一些已经发布 app,一方面可以自己更好地理解和使用 Swift,另一方面可以和志同道合的人一起交流,共同进步。...项目中有的地方代码写不是很简洁,毕竟自己能力有限,对 Swift 使用不是很熟练,还请各位朋友喜勿喷。...项目结构 由于刚接触 Swift,以及对 MVVM 理解不深,所以没有使用 MVVM 设计模式,项目使用传统 MVC 设计模式。...下载项目之后,点击此处,查看项目文档 项目文档 或者直接打开文件目录 『docs/index.html』。 运行项目出现问题都可以给我留言或者直接加我 QQ 联系,我会尽快回复。

2K40

使用SWRevealViewController实现侧滑菜单

1.导入SWRevealViewController 由于该库是用OC写,所以swift使用还需要一些步骤; 1.1 下载SWRevealViewController到本地,然后打开SWRevealViewController...Header;苹果官方推荐通过header file文件来Swift项目使用OC 1.3 然后xcode就会创建一个 项目名-Bridging-Header.h文件,打开该文件,输入: #import...2.使用SWRevealViewController (storyboard方式) 2.1 拖拽一个新View Controller到面板上,并设置class 为SWRevealViewController...2.2 创建菜单 View Controller,这里可以为任何类型, 2.2.1 创建完成后,左键点击SWRevealViewControllerView Controller并按住control...) 结果如图,这里要注意一个问题,就是指向第一个显示ViewController箭头 指向了SWRevealViewController; 因为我实际开发中发现指向这个ViewController

97920

Swift:静态工厂方法

无论是我们要根据APP品牌设置样式视图(View),还是要配置视图控制器(View Controller),亦或是测试中创建存根值时,我们经常发现需要将设置代码放在某个地方。...此外,由于扩展名可以限制为单个文件(通过添加private关键字),因此我们可以轻松地为需要创建特定视图应用程序部分设置扩展名,只有一个功能即可: //我们只会在单个视图控制器中使用它,因此我们将范围设为私有...尤其是使用子视图控制器时,我们通常最终会得到一组视图控制器,它们只能在其中呈现特定状态,而不是在其中包含大量逻辑。对于那些视图控制器,将其设置移动到静态工厂API可能是一个很好解决方案。...尤其是测试依赖于特定模型配置代码时,很容易以充满样板测试结束,这使它们更难以阅读和调试。...通过命名上述工厂方法makeStub,我们还可以清楚地知道此代码仅用于测试,因此将来不会意外将其添加到我们主要应用程序目标中。

2.4K10

iOS 面试策略之系统框架-设计模式

公共接口多个类互相之间保持独立,解耦性良好。同时使用接口时,外部无需理解其背后复杂逻辑。另外就算接口背后逻辑改变也不影响接口使用。...关键词:#model #view #controller MVC 是 Model-View-Controller 简称。它是苹果官方推荐 App 开发架构,也是一般开发者最先遇到、最经典架构。...如何解耦 ViewController iOS 开发中是一个热门的话题。下图是实际开发中 MVC 架构: [image] 3....整个开发中需要特别注意线程安全,即使多线程情况下,依然只初始化一次变量。 Objective-C 中,是用 GCD 来保证这一点。...同时配合 NSKeyValueObservation 我们可以更简单使用 KVO 了,下面是示例代码: // Swift 4 中,NSObject 类不再自动被推断为 @objc,需要用 @objcMembers

1.6K20

iOS各种调试技巧豪华套餐

工程导航面板中打开FirstViewController.swift并找到以下代码: var mockNotesDataSource: [String] = ["Do some laundry",...使用Swift属性观察者功能,在数据源发生改变时,表视图会自动重新加载。通过查看以上代码片段,你会发现应该应用中应该有4个项目需要展示,但现在展示数据就说明某些地方出现了差错。...打开Main.storyboard 并选中Second View Controller Scene。...左侧文档概览面板中,展开Second View Controller视图对象以查看子视图排序。 Xcode文档概览中按照递升顺序堆叠视图,换句话说,列表顶层视图是视图层次基础。...你可以特定经纬度模拟设备, 如果你应用程序使用iCloud来管理数据,你也可以手动触发同步事件。 本文中使用demo app非常简单,使用文中提到技术可以帮你未来节省不少时间。

1.4K20

iOS各种调试技巧豪华套餐

工程导航面板中打开FirstViewController.swift并找到以下代码: var mockNotesDataSource: [String] = ["Do some laundry",...使用Swift属性观察者功能,在数据源发生改变时,表视图会自动重新加载。通过查看以上代码片段,你会发现应该应用中应该有4个项目需要展示,但现在展示数据就说明某些地方出现了差错。...打开Main.storyboard 并选中Second View Controller Scene。...左侧文档概览面板中,展开Second View Controller视图对象以查看子视图排序。 Xcode文档概览中按照递升顺序堆叠视图,换句话说,列表顶层视图是视图层次基础。...你可以特定经纬度模拟设备, 如果你应用程序使用iCloud来管理数据,你也可以手动触发同步事件。 本文中使用demo app非常简单,使用文中提到技术可以帮你未来节省不少时间。

1.8K90

AVKit框架详细解析(二) —— 基于视频播放器画中画实现(一)

本教程中,您将学习如何向使用 UIKit 构建现有视频应用程序添加画中画支持。...现在您已经设置了所有内容,您可以应用程序中实现画中画。 ---- Implementing PiP 打开 AppDelegate.swift。...视频自定义控制器中播放。 但是……如果您点击画中画按钮,则什么也不会发生。 别担心,你现在会解决这个问题打开 CustomPlayerViewController.swift。...如果用户选择播放视频画中画,可以合理地假设他们希望您应用程序屏幕显示有关视频现在如何播放画中画大量信息。他们可能想继续使用应用程序其余部分。...目前,当视频画中画窗口中播放时,示例应用程序会显示一条消息。您可以使用画中画控制器代理中方法来控制画中画播放开始和结束时发生情况。

2.7K10

关于Android中MVVM,MVC和MVVM那些事

数据更新之后,Model通知View数据变化。 5. View显示更新之后数据。 2.MVC优点? 1)把业务逻辑全部分离到Controller中,模块化程度高。...View是强依赖特定Model,如果需要把这个View抽出来作为一个另外一个应用程序可复用组件就困难了,因为不同程序Model是不一样。 4.使用场景?...Passive View中,为了减少UI组件行为,使用controller不仅控制用户事件响应,而且将结果更新到view上。可以集中测试controller,减小view出问题风险。...MVP当中,View不依赖Model。这样就可以View特定业务场景中脱离出来,可以说View可以做到对业务逻辑完全无知。它只需要提供一系列接口提供给上层操作。  ... MVVM 中就出现 Data Binding 这个概念,意思就是 View 接口 showData 这些实现方法可以写了,通过 Binding 来实现。

1.4K30

PureLayout,使用纯代码写AutoLayout

PureLayout是一个跨平台Objective-C库,可以伟大Swift里工作(并查看!)。它完全与iOS支持自动布局所有版本和OS X向后兼容。 从头开始编写自动布局代码是不容易。...' 运行终端pod install ,然后打开应用程序.xcworkspace文件启动Xcode 。...App 扩展 要在应用程序扩展使用PureLayout ,你需要做一些额外配置,以防止不可用API使用。 点击这里获取更多信息。 发布 发布标签在使用Git提交历史语义版本 。...有5个特定属性类型,其用于大部分API : ALEdge ALDimension ALAxis ALMargin iOS8.0和更高版本可用 ALMarginAxis iOS8.0和更高版本可用...下面是使用PureLayout创建(自动启动)两种观点之间约束: view1.autoPinEdge(.Top, toEdge: .Bottom, ofView: view2) 如果没有PureLayout

2.1K70

iOS 9 Storyboard 教程(二上)介绍Segue静态单元格(static cell)

Paste_Image.png 对于Ratings app来说,你不需要做任何想做事.只需要使用table view controller然后它会根据不同设备尺寸自动地调整尺寸到合适大小,你将会使用...当你使用静态单元格时候,你table view controller不需要爱一个数据源.虽然你使用了Xcode得模板来创建PlayerDetailsViewController类,但是它还是有数据源占位符...打开PlayerDetailsViewController.swift并且删除所有从下面开始行(除了类大括号): // MARK: - Table view data source 运行app然后检查带有静态单元格控制器...为了避免出现这种情况,你应该用户点击任何地方都能弹出键盘.那非常简单实现–只打开PlayerDetailsViewController.swift然后添加tableView(_:didSelectRowAtIndexPath....textField作为第一响应者会自动弹出键盘.只需要一个小小地调整,但是却可以省去用户焦虑. ---- Tip: 当添加一个代理方法或者重写一个view controller方法,只需要输入方法名称

3.2K10

UIApplicationDelegate

它响应以应用程序本身为目标的事件,而不是特定应用程序Views或Viewcontrollers。 你可以使用它来存储应用程序中央数据对象或任何没有拥有view controller内容。...打开一个发送给 appURL. 如果有一个URL需要打开,系统会调用app delegate application(_:open:options:) ....当用户退出应用程序时,系统暂停应用程序之前短暂地将其移至后台状态。 在其他时候,系统可能会启动应用程序到后台(或唤醒挂起应用程序),并给它时间来处理特定任务。...四、响应通知和事件 系统向app delegate发送许多不同通知和事件,app delegate决定如何最好地响应传入信息并更新app。...许多情况下,app delegate可能只是通知其他对象(例如view controllers)需要自行更新,但在某些情况下,app delegate可能会自行完成工作。

67830

Android开发快速入门iOS开发(概览)

Xcode object-c(swift) Cocoapods Controller AppDelegate 2 工具篇 iOS开发工具 Xcode可直接在线获取并安装,如果仅是简单开发一个HelloWorld...`,'4.0.1' # 指定依赖第三方库,大于某个版本 pod '***', '~> 1.8.4.0' 3 语言篇 iOS开发一般使用oc或 swift来开发,需要注意是iOS没有Android里包概念...; iOS中页面是由Controller构造出来,类似于Android Activity,其关键生命周期为: loadView : 加载View(一般使用xib构建时) viewDidLoad:...) 静态库与动态库区别主要在于在打包链接时操作不一样; 4.3.1 静态库 静态库在打包生成可执行目标文件时,会把汇编生成目标文件.o与引用库一起链接打包到目标文件中,静态库特点: 在编译期完成对函数库链接...,主要是创建好ViewController viewDidLoad方法里加入View来显示内容,eg: //ps:代码是swift,oc代码也是类似的,只是语法有稍微区别 override

95820

唯一可行 iOS 架构

MVC,MVP,VIPER,RIBLET,Clean Swift等。这样文章有很多,它们观点和架构截然不同。 我们社区一直争论哪种“模式”是最好。但是问题是他们全都是狗屎。...初见 MVC 尽管开发人员争论应该使用哪种体系结构,但 Apple 已经向我们提供了有关如何构建 iOS 应用程序说明,即 MVC。 ? View 是用户可以屏幕上看到部分。...没有人可以为您提供具有一定数量灵丹妙药解决方案,因为没人知道您问题,应用程序业务逻辑,域模型详细信息和主要目标。您应该自己设计应用程序。...由于许多应用程序逻辑不属于模型或视图,因此通常会在控制器中处理。这导致了一个称为 Massive View Controller 问题,该问题中,视图控制器最终会做太多事情。...这种分离已成为 GUI 应用程序设计中主要分离之一,它们对 iOS 也很有用。但是表示层分离通常是特定于平台

1.2K20

ARKit 教学:如何搭配SceneKit来建立一个简单ARKit Demo设定ARKit SceneKit View从ARSCNView移除物件

现在请确认你已具备上述需求,并准备开始进行,以下是我将会带你走过: 建立一个新ARKit apps项目 设定ARKit SceneKit View 将ARSCNView与View Controller...ARSCNView 建立一个新ARKit apps项目 再来,打开Xcode,Xcode菜单中,选择File > New > Project… ,然后选择Single View App并按下next...设定ARKit SceneKit View 现在请打开Storyboard,请在右下角Object Library找到ARKit SceneKit View,将它拖拉至你View Controller...image 然后将你ARKit SceneKit View尺寸拉满整个View Controller,它应该会呈现如下方: ?...允许相机使用权限 我们要执行我们App之前,我们需要告知我们使用者,我们得使用相机来进行增强现实应用,这是一个从iOS10就开始必要询问告知动作,也因此,请打开info.plist 。

1.8K20
领券