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

委托是零,MVVM方法,两个VC有相同的VM。iOS,swift

委托是一种设计模式,用于实现对象之间的通信和交互。在委托模式中,一个对象(委托方)将某些任务委托给另一个对象(委托对象)来完成。委托方通过调用委托对象的方法来触发特定的行为或获取结果。

MVVM(Model-View-ViewModel)是一种软件架构模式,用于将用户界面(View)与业务逻辑(ViewModel)和数据(Model)分离。在MVVM中,View负责展示数据和处理用户交互,ViewModel负责处理业务逻辑和数据的获取与处理,Model则是实际的数据模型。MVVM的目标是提高代码的可维护性和可测试性。

在iOS开发中,Swift是一种流行的编程语言,用于开发iOS、macOS、watchOS和tvOS应用程序。它具有简洁的语法和强大的功能,支持面向对象和函数式编程范式。

对于两个VC(ViewController)具有相同的VM(ViewModel),这意味着它们共享相同的业务逻辑和数据模型。这种设计可以避免代码的重复,并提高代码的复用性和可维护性。

以下是一些腾讯云相关产品和产品介绍链接地址,适用于云计算领域的开发和部署:

  1. 云服务器(CVM):提供可扩展的云服务器实例,用于部署和运行应用程序。详情请参考:https://cloud.tencent.com/product/cvm
  2. 云数据库MySQL版(CDB):提供高性能、可靠的关系型数据库服务,适用于存储和管理应用程序的数据。详情请参考:https://cloud.tencent.com/product/cdb_mysql
  3. 云存储(COS):提供安全可靠的对象存储服务,用于存储和管理大规模的非结构化数据。详情请参考:https://cloud.tencent.com/product/cos
  4. 人工智能平台(AI):提供丰富的人工智能服务和工具,包括图像识别、语音识别、自然语言处理等。详情请参考:https://cloud.tencent.com/product/ai
  5. 物联网(IoT):提供全面的物联网解决方案,包括设备接入、数据采集、数据存储和应用开发等。详情请参考:https://cloud.tencent.com/product/iotexplorer

请注意,以上链接仅为示例,具体的产品选择应根据实际需求和项目要求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS开发之ReactiveCocoa下MVVM(干货分享)

在之前发表过一篇博文,名字叫做《iOS开发之浅谈MVVM架构设计与团队协作》,大体上讲就是使用Block回调方式实现MVVM。...不过一点要说明就是,不使用ReactiveCocoa可以实现MVVM,并非使用MVVM模式你就必须使用ReactiveCocoa东西,你可以使用KVO,Block,Delegate,Navigation...3.0后就支持 Swift了,因为我没有用Swift写东西,所以就用2.5版本,设置完Profile文件后,pod install即可。 ?...下方VC层,在VC层中有两个视图控制器,一个登录使用视图控制器 (ViewContorller)另一个登录成功后视图控制器(LoginSuccessViewController)。...上面VM实现,如果要进行单元测试的话,就对相应VM类进行初始化,调用相应函数进行单元测试即可。接着就是看如何在相应VC模块中使用VM

5.9K30

iOS开发之ReactiveCocoa下MVVM

在之前发表过一篇博文,名字叫做《iOS开发之浅谈MVVM架构设计与团队协作》,大体上讲就是使用Block回调方式实现MVVM。...不过一点要说明就是,不使用ReactiveCocoa可以实现MVVM,并非使用MVVM模式你就必须使用ReactiveCocoa东西,你可以使用KVO,Block,Delegate,Notification...下方VC层,在VC层中有两个视图控制器,一个登录使用视图控制器(ViewContorller)另一个登录成功后视图控制器(LoginSuccessViewController)。...但是如果用户没有实名或者绑卡,那么VM就给VC发送failureObject信号,根据信号中参数来判断走实名认证流程还是走绑定银行卡流程。...接着就是看如何在相应VC模块中使用VM

1.3K60
  • 开源项目——『看知乎』iOS

    但是这个方法两个弊端,一没有自动提示,输入属性名时候容易输错,二layer.borderColor这个属性需要 Type CGColor,但这里却只能设置 UIColor,所以layer.borderColor...05年时候微软为设计 WPF 而提出 MVVM 模式,主要思想基于Model 和 View 数据双向绑定,通过响应事件来处理用户操作。...于是有人提出在 iOS 中使用 MVVM,不过 Cocoa Touch 跟 WPF 不一样,所以大多数时候在 iOS MVVM 其实是 M-VM-V-C,也就是在 View 和 Model 之间加了个...关于面向协议编程 Swift2之后可以用 extension 给协议方法或者属性加上一个默认实现了,这使得 Swift 可以用协议模拟 Ruby 中用 module 实现 mixin 效果,也就是通过协议扩展某个类功能...getData() } } } 这样如果我好几个 TableViewController 都要实现刷新功能,只要都实现Refreshable协议,然后定义各自getData方法

    1.2K50

    MVPMVCMVVM

    ; 3.MVP与MVC还有一点不同是,它通信双向,如下图所示,两个方向:V—>P—>M,M—>P—>V。...MVVM 1.MVVM由MVP进化而来,MVVM模式基本上与MVP相同,只是把MVP中P变成了VM,即ViewModel, 2.MVVM数据可以实现双向绑定,即View层数据变化则ViewModel...MVVM我们就可以测试里面的viewModel,来验证我们处理结果对不对(Xcode7测试已经越来越完善了)。...2.便于代码移植 比如iOS里面有iPhone版本和iPad版本,除了交互展示不一样外,业务逻辑model一致。这样,我们就可以以很小代价去开发另一个app。...(以前做公司iPad时候就深深感觉到,全部在VC里面多么痛苦和重新开发一个没有啥区别)。 3.兼容MVC MVVMMVC一个升级版,目前MVC也可以很快转换到MVVM这个模式。

    49220

    使用流动控制器(Flow Controller )实现 MVVM 协议模型

    对于这种情况,必要研究一下 Swift 泛型,虽然它仍然一些问题。...MVVM 这种架构和我之前项目的架构很像,唯一不同 VC (ViewController) 必须接受一个兼容 ViewModel(通过既定协议)。...因此 VC 独立、封装完整,重要要方便测试和提高代码重用性。 这种独立意味着在我想要让界面灵活可变时候可以用这种控制器来实现。...在本例中,只有数据和子单元变化,可以作为一个参数传递,并为所有列表创建一份可重用代码。 这里有趣一点实现了两种响应协议:一个用于网格和一个列表。但两个实现是相同。...目前仍在调查究竟是 Swift bug 还是故意限制。 得到结果代码非常干净,并最大限度地提高接口重用。还研究了泛型和协议作为一种抽象问题方法。其他结果构建时间明显快得多。

    99640

    Swift热重载

    一种更好方法,被其他平台所接受,并且可以在 Swift/iOS 生态系统中实现。我已经用了十多年了。 从今天开始,您想每周节省多达 10 小时工作时间吗?...类似的故事,当它工作时候很好,但是在更大项目中,它工作不可靠,而且往往中断次数比它们工作次数多。如果你任何错误,他们不会为你提供调试代码能力,因此,采用情况有限。...我们可以利用我最初在 2014 Playgrounds 中使用相同方法。我已经使用它十多年了,并且在数十个 Swift 项目中使用它并取得了巨大成功!...我创建了 Host 概念并且在这种情况下工作很好。两个: - Inject.ViewHost - Inject.ViewControllerHost 我们如何集成它?...像 MVVM / MVC 这样标准架构可以获得免费逻辑注入,重新编译你类,当方法重新执行时,你已经在使用新代码了。

    2K20

    Swift + RxSwift MVVM 模块化项目实践

    ├── Home_tCell.swift│ └── Product_tCell.swift├── ViewController│ ├── Home_vc.swift│ └── Product_vc.swift...└── ViewModel ├── Home_vm.swift └── Product_vm.swift 目录结构分为: Api: 接口 Api Model: 实例 Model Module...,在处理商品列表界面的行点击事件(didSelectRowAt)时候由服务端返回uri字段决定,具体跳转哪个界面服务端决定,个人理解界面负责产生信号,每个信号都会经过复杂筛选变化又会反应到界面上...另外登陆注册模块(Carlisle)参考RxSwift官方 Demo 设计,使用 MVVM 架构设计,虽然没有严格遵守上面文章所说 MVVM 引用层次,不过登陆注册模块(Carlisle)还是可以灵活适用于不同需求在简单修改之后...,功能很简单,如果感兴趣可以下载看下 总结 本文简单介绍了自己在 Swift 模块化项目中一些实践经验,借助 RxSwift 实现 MVVM 框架设计,内容比较杂,供大家参考,随着 Swift 5

    3.2K101

    当我们使用 MVVM 模式时,我们究竟在每一层里做些什么?

    其中 M 和 V 中文词语和英文单词很好理解,但是 VM 就不是个日常用词;于是各种不知道应该放在哪里代码便一窝蜂全放进了 VM 中,最终导致了 VM 无限膨胀,成百上千行也是司空见惯啊!...而一个能持续发展程序怎么能只有 GUI 呢? MVVM 只是数据驱动型 GUI 程序建议开发模式;无论三层中哪一层,本质上都是在解决 UI 问题。...而非 UI 问题根本就不在 MVVM 讨论之列。 不知看到这里时你会不会喷我一脸——“V”解决 UI 问题也就算了,“VM”和“M”算什么 UI! VM,视图模型。其本质模型。什么模型?...MVVM 模式按此理解后,我们将更能够将代码放到合适位置,避免 VM 代码膨胀: 公共控件或者辅助代码应该抽出来放到别处,比如形成公共组件 一些非 UI 业务功能单独做,独立于 MVVM 模式,...去调用那个委托 ---- 参考资料 Recommendations and best practices for implementing MVVM and XAML/.NET applications

    89610

    春招路上孤独iOSer心路历程(面经)

    swift static与class关键字区别 逃逸闭包与普通闭包区别 iOS 多线程GCD async与sync区别 iOS 3张图片下载完了之后合并一张图 设计一个缓存机制(底层数据结构是什么样子...6 mvvm与mvc区别 7 你认为mvvm最大好处 8 如何比较两个浮点类型 为什么要这么做 9 进程和线程区别 为什么切换线程代价小 10 如何实现进程间通信 11 信号量 管道 共享内存...现在给定b 求a 二面 45分钟 自我介绍 项目 15分钟 加载图片卡顿为什么 哪些优化方案 图片解码时机 设计os复制粘贴 假如现在有一个可以需要在三维中写字并输出结果课题 怎么做这个课题 你思路...6 一面 40分钟 自我介绍 算法题: 两个队列实现栈 分类extension 在oc与swift区别 在什么时机加载(没答上来) oc与swift语言区别 tableview做了哪些优化 如何实现多个图片下载后合成一张图片...除了gcd group之外 其他方法 信号量与锁区别 mvc和mvvm区别 为什么从swift开始学 如何学习iOS 什么要问

    2.5K20

    Swift开源项目-单糖

    单糖——良品生活指南:家居食、礼物美妆、海淘购物 感兴趣朋友可以去 app store 下载 iOS 版下载地址 ---- 说明 本程序仅供学习交流,不可用于任何商业用途。...说明 因为公司使用 Objective-C 开发 app,没有使用 swift 来开发,所以决定自己研究 Swift,研究 Swift 时间不长,对于 Swift 基本语法了大致了解,但是对有些概念和语法还是理解不深...使用 Swift 模仿第一个 app 单糖,总体来说界面搭建还算简单,而且结构不是很复杂,本次项目完成了大部分界面,对于项目中数据接口都是通过 Charles 抓包获得,基本每个界面都是有数据请求...在本文最后,项目的完整源码,喜欢朋友可以下载下来,如果您感觉我写代码对您有所帮助,还请在 github 给个 star,非常感谢您支持!~ 项目截图 ? 单糖 ? 首页 ? 单品 ?...项目结构 由于刚接触 Swift,以及对 MVVM 理解不深,所以没有使用 MVVM 设计模式,项目使用传统 MVC 设计模式。

    2K40

    Swift 代理模式

    Xcode 8.2 | Swift 3.0 在iOS开发中,无论 Objective-C 还是 Swift ,Delegate 有着具足轻重位置,如TabelViewDelegate 与 TableViewDataSource...Objective-C 代理模式 在介绍 Swift 代理模式前,先来看回顾一下 Objective-C 中代理模式如何实现 Objective-C 中用代理实现反向传值: 委托方(子控制器) 委托方需要实现...Swift 中用代理实现反向传值: 委托方(子控制器) 创建协议 、声明协议方法 创建一个代理属性 执行协议方法 代理方(主控制器) 继承协议 将代理设为自己 实现代理方法 总结 对比可以方法 Swift...代理模式 与 Objective-C 用法完全相同,只是语法发生了变化。...值得一提Swift 扩展 extension可以用来继承协议,实现代码隔离,便于维护。

    50010

    干货 | 深入浅出Apple响应式框架Combine

    protocol中三个receive方法描述了订阅三种不同生命周期,本文会在后续2.5介绍。 Publisher发布者协议中有两个通用类型参数Output和Failure。...Publisher发布者协议中有两个通用类型参数Output和Failure,而Subscriber订阅者接收发布者产生Output和Failure,因为发布者和订阅者互相协作,所以一个匹配发布者和订阅者会有...虽然Combine本身闭源,但Combine在Foundation层代码确是开源兴趣读者可以参考Swift源码中Publishers+URLSession.swift和Publishers...+NotificationCenter.swift进一步了解Publisher和Subscriber如何协同工作原理。...3.2.2 Bind ViewModel 下面VC中具体bind ViewModel示例: ?

    3.9K31

    唐巧iOS技术博客选摘

    Viewfinder:移动支付公司 Square 将去年收购照片应用 Viewfinder 开源了,包含服务端、iOS 和 Android 应用代码。这里该项目的介绍。...UIImageView-BetterFace-Swift:UIImageView-BetterFace-Swift一个根据目标图象中头像位置进行智能图片裁剪开源库,该地址其更新Swift版本。...《如何用Swift做一个不错按钮变换动画》:文章介绍了如何用Swift语言,采用Core Graphics来完成两个按钮之间切换动画效果(效果图如下所示)。...《QQ 中未读气泡拖拽消失实现分析》:QQ 中针对强迫症个很棒交互,对于那些暂时不想理会未读信息气泡,可以直接手指拖拽去掉。本文介绍了其实现方法。...它可以用于任意两个 UIViewController 之间,只需指定两个 VC相同元素即可 《Increasing Performance by Reducing Dynamic Dispatch

    3.3K60

    iOS 面试策略之经验之谈-面向协议编程

    Swift 中,不同 class 即使命名相同,在不同 bundle 中由于命名空间不同,它们依然可以和谐共存毫无冲突。这在 App 很大、bundle 很多时候特别有用。...Swift 和 Objective-C 不支持多继承,因为这会造成菱形问题,即多个父类实现了同一个方法,子类无法判断继承哪个父类情况。...在 Java 中, interface 解决方案,Swift 中有类似 protocol 解决方案。 2.说说 POP 相比于 OOP 优势 关键词:#灵活 #安全 这道题一个开放性问题。...其中又有两个方法为 eat 和 greet,我们发现分别在 cat 和 dog 中,eat 方法对应类型参数,同时 greet 也对应类型参数。...而根据 greet 方法中对 FoodType 使用,Swift 可以自动推断,FoodType 在 Cat 中 Fish,在 Dog 中 Bone。

    1.3K20

    设计模式 | MVC、MVP、MVVM详析

    【缺点】对于简单应用来说 MVP 稍显麻烦, 各种各样接口与概念,使得整个应用充斥着接口!!!!!...MVVM与MVP非常相似, 它们间区别: View和Model进行双向绑定(data-binding), 两者之间一方发生变化则会反应到另一方上; MVP中View更新需要通过Presenter...【对控制器瘦身】 MVVM可以看成MVC进化版, 它可以把Activity中大量VC逻辑【UI、控制调度、业务逻辑】封装到ViewModel层中, 使得Activity代码架构性能提升不少;...【VC,CV】; Activity可以直接访问M层(数据类、数据操作), 而CV两层都在Activity中, 即CV又分别会跟M耦合【CM,VM】 所以MVC三层相互耦合,耦合性很高; 【CV...,VM】 在Activity中, 可以向View发送指令,即调用UI逻辑方法【CV】, 再由View直接要求Model改变状态,即UI逻辑调度数据操作逻辑,或使得M层变化【VM】。

    2.5K10

    App架构设计经验谈:技术选型

    当你做架构设计时,必然会面临技术选型抉择,不同技术方案,架构也可能完全不同。哪些技术选型需要做决策呢?比如,App纯原生开发,还是Web App,抑或Hybrid App?...iOS开发,语言上选择Objective-C还是Swift?架构模式用MVC,还是MVP,或者MVVM?下面根据我一些经验对某些方面做点总结分享。...就说我们目前正在做项目,先说明下背景: 不止要做Android和iOS App,也要做微信公众号; H5人员缺乏,只有一两个兼职可用,而且不可控因素很高; 我们对原生比较熟; 开发时间只有半个月。...Objective-C/Swift 我在项目中选择了Swift,主要基于三个原因: Swift真的很简洁,生产效率很高; Swift取代Objective-C必然趋势; 目前iOS只有我一个人开发,...对象 MVC/MVP/MVVM 先分别简单介绍下这三个架构模式吧: MVC:Model-View-Controller,经典模式,很容易理解,主要缺点两个: View对Model依赖,会导致View

    1.4K10

    架构之路 (五) —— VIPER架构模式(一)

    下面看下写作环境 Swift 5, iOS 13, Xcode 11 接着就是正文了。 VIPER架构模式MVC或MVVM另一种选择。...MVC (Model-View-Controller)2010年iOS应用程序架构中最常使用模式。...第一个只是interactor路点列表一个副本。第二个使用mapInfoProvider来计算所有路径点总距离。第三种方法使用相同数据provider来获得路点之间方向。...它将重用TripDetailInteractor,因为它共享相同数据模型,并且只读read-only视图。 创建一个名为TripMapViewPresenter.swiftSwift文件。...了router之后,转到TripDetailInteractor.swift,并添加以下方法: func addWaypoint() { trip.addWaypoint() } func moveWaypoint

    17.5K10
    领券