单一责任原则(SRP)规定,每个软件模块或类都应该有一个且只有一个更改理由。 除佛陀本人外,任何人都不承担透露神秘秘密的责任。 。 。 将因相同原因而发生变化的事物聚集在一起。 分开那些由于不同原因而改变的事物。 鲍勃·马丁 难以理解,因此难以维护。 重用困难。 由于职责在同一个类别中紧密联系在一起,因此很难在不损害其他职责的情况下更改其中一项职责(刚性),并且最终可能破坏软件的其他部分(脆弱性)。 高耦合,即该类具有过多的依赖性,因此,由于其他类的更改(同样是脆弱性),因此更容易发生更改。 让我们考虑一些可能需要分开的职责: HTTP API调用 -如果需要修改标头或基本URL,则只能将其修改为HTTPClient 。 无需为此其他文件做任何更改。 创建视图状态-创建视图状态应该由工厂或转换器负责。 验证 — 所有验证逻辑都应封装到单独的Validation类中,以便将来只有一个人负责修改验证逻辑或添加新行为。 坚持不懈 通知 错误处理 记录中 格式化 解析中 制图 导航 商业逻辑 创建视图 https://blog.cleancoder.com/uncle-bob/2014/05/08/SingleReponsibilityPrinciple.html https://www.scaledrone.com/blog/solid-principles-for-becoming-a-better-ios-swift-developer/ 单一责任原则@清洁代码联盟聚会,来自Eyal Golan 感谢您阅读文章。 您可以在以下位置找到我: Linkedin: Aaina Jain 推特: __aainajain
HTTP Live Streaming(HLS)是Apple的技术,用于将实时和点播音频/视频内容流式传输到各种设备,例如iphone,mac甚至android设备。 HLS的核心是使用HTTP协议(与Web供电相同的协议)来传递内容。 HLS流的行为类似于常规Web流量。 它们与诸如内容交付网络(CDN)之类的预先存在的缓存基础结构一起使用,并且可以可靠地通过典型的防火墙和路由器。 注意** iOS应用要求 以下要求适用于提交供在App Store中分发以在Apple产品上使用的iOS应用。 Apple可以自行决定拒绝或删除不合规的应用程序。 如果您的应用通过蜂窝网络提供视频,并且视频在五分钟内超过10分钟或5 MB数据,则必须使用HLS。 您可以对较小的剪辑使用渐进式下载。 如果您的应用在蜂窝网络上使用HLS,则必须至少以192 Kbps或更低的带宽提供一个流。 低带宽流可以是纯音频的,也可以是带有静止图像的音频。 HTTP使您可以使用通用Web服务器而不是专用的流服务器轻松地在流中部署媒体内容。 以下是HLS的关键功能,这就是使用它的原因 自适应流 HLS适应可变的网络条件,动态调整播放以匹配有线和无线连接的可用速度。 内容保护 可以使用样本级加密对媒体段进行单独加密 后备与流替代 如果播放器无法重新加载媒体播放列表文件,则播放器将尝试切换到另一个兼容的媒体播放列表 除了上述三个优点外,还有其他优点,如下 隐藏式字幕和字幕 快进和快退播放 备用音频和视频格式 定时元数据 广告插入 HLS像所有自适应流技术一样工作; 您创建了多个文件以分发给播放器,这些文件可以自适应地更改流以优化播放体验。 作为基于HTTP的技术,不需要流服务器,因此所有交换逻辑都驻留在播放器上 要分发给HLS客户端,您需要将源编码为多个不同比特率的文件,并将它们分成短块(ts文件:媒体文件)。 这些文件与带有扩展名.M3U8的基于文本的清单文件一起被加载到HTTP服务器上,该文件将播放器定向到每个编码流的附加清单文件。 播放器监视带宽状况。 如果播放器检测到带宽变化,它将检查主播放列表中其他流的位置,然后检查特定于流的清单文件中下一个视频数据块的URL。 PlayerSide(App) [App]使用m3u8的网址制作AVAsset [App]使用资产制作一个PlayItem,并使用Player(AVPlayer)设置播放项 [网络]检索主播放列表(m3u8文件) [网络]检索内容密钥 [网络]检索选定的变体播放列表(媒体播放列表) [网络]检索课程(.ts媒体文件) [应用程式]播放 https://developer.apple.com/videos/play/wwdc2016/503/ https://developer.apple.com/library/content/referencelibrary/GettingStarted/AboutHTTPLiveStreaming/about/about.html http://www.streamingmedia.com/Articles/Editorial/What-Is-…/What-is-HLS-(HTTP-Live-Streaming)-78221.aspx
iPhone App Development是当今市场上急需的专业知识。 iPhone应用程序已通过各种功能锁定了我们生活的各个角度。 它包括我们的日常活动,例如购物,工作,旅行等。 市场上已经入侵了许多iOS应用程序,因此竞争是前所未有的激烈。 在这种情况下,为合适的用户制作合适的iPhone应用程序非常重要。 iPhone应用程序开发人员在其中扮演着至关重要的角色。 再次聘请合适的iPhone应用程序开发人员是一种有条理的策略,需要巧妙地加以解决。 雇用合适的iPhone应用程序开发人员的5条提示 1.判断iPhone技术知识 具有完整域名能力的任何iPhone应用程序开发人员都将更容易被录用。 找出您的iPhone应用程序开发公司或开发人员的知识程度。 了解他们在iOS框架中的领域专业知识。 宁愿表现出他们与最新市场趋势紧密联系的热情; 实际上,这也是交付最佳应用程序所必需的。 2.了解iPhone应用程序开发经验 下一步当然是要知道潜在的应用程序开发机构有多少经验。 查看他们最近的工作。 您实际上可以使用他们最近制作的应用,并估计它们可以为您带来的效果。 确保程序员有能力满足特殊要求。 如果您聘请了经验丰富的iPhone应用程序开发人员,那么制作出色应用程序的可能性将会更高。 他们将比经验不足的开发人员更完美。 3.需要了解iPhone应用程序开发 在技术方面,对应用程序的真正了解通常是开发人员主要需要的。 知道应用程序的用途可以帮助他们真正值得使用它。 意识到实时市场需求的开发人员确实可以提供新颖,创造性和鼓舞人心的应用制作想法。 4.期待iPhone应用程序项目的一致交互 为了获得成功,在最专业的工作环境中工作很重要。 确保与开发人员进行常规项目交互。 它将帮助应用程序制作出所需的一切东西,从而消除了任何延迟或错误,也避免了将来不必要的成本。 5.估算总体项目成本 您可能需要花费一些钱才能完成其他工作,即使应用程序准备就绪也是如此。 在项目开始时就需要一次完成工作分配,以证明应用程序预算的合理性。 首先要对应用进行全面规划,然后再进行开发。 仅为最初需要的功能然后为其余的功能提供项目资金。 确保您有足够的资金来推广您的应用程序并支付其余的管理费用。 最后, 评估您的应用程序要求。 了解最新的iPhone应用程序趋势。 打开您对应用程序和应用程序使用的未来计划的见解。 这样,它将帮助您确定选择正确的iPhone应用程序开发公司。 祝你好运!
向您的React Native应用程序添加静态类型。 Flow使我们能够轻松地向我们的JavaScript添加静态类型检查。 Flow将帮助您防止错误,并可以提供更好的代码文档。 许多React Native文档和源代码已经使用了流程,因此从来没有比现在更好的时间开始使用它了! 在本文的结尾,我们还将SublimeLinter-flow添加到Sublime Text中,以便在编辑器中进行实时类型检查! 向React Native添加流 首先,让我们创建一个新的React Native应用程序: 反应本机初始化流程 .flowconfig文件是放置特定流配置的位置,类似于.eslintrc文件。 新的React Native项目带有.flowconfig用的预配置.flowconfig文件。 在本教程的其余部分中,我们将使用此默认配置。 如果您想自定义配置或了解有关配置的更多信息,请查看文档。 现在,我们需要使用flow-bin软件包安装flow。 cd进入根目录,然后在文本编辑器中打开.flowconfig文件,并查看底部以查看您的应用程序需要哪种版本的流: 对我来说,它的版本是0.33.0 ,所以它将成为我安装并另存为dev依赖项的版本。 纱线添加flow-bin@0.33.0 –dev 要么 npm我flow-bin@0.33.0 –save-dev 在本教程中,我们将按照文档以及我在社区中与大多数人交谈的建议在每个项目的基础上安装流程。 首选安装方法是按项目进行安装的原因是,不同的.flowconfig配置需要使用不同版本的流,如果在全局范围内安装它,则在很多情况下将无法正常工作。 要了解有关全局安装的更多信息,请在此处查看文档。 现在已经安装了正确的流版本,我们需要做的最后一件事是设置一个简单的命令,以便我们在每次键入check时都可以运行。 对我来说, npm run flow非常有意义,因此让我们打开package.json并将流程脚本添加到我们的脚本中: “脚本”:{ “ start”:“节点node_modules / react-native / local-cli / cli.js开始”, “ test”:“开玩笑”, “ flow”:“流” }, 现在,我们可以转到命令行来首次启动流服务器: npm运行流程 我们应该得到这个: 从文档: 使用Flow服务器 对于大型项目,您可能只希望Flow在文件更改时逐步检查文件。 […]
奎兰芝! Masih dengan教程Pembuatan iOS App bagi pemula。 Seperti judulnya,达拉姆教程ini akan dijelaskan bagaimana membuat sebuah登录表单,dengan komponen sebagai berikut: 文本字段khusus输入jenis电子邮件地址 文本字段khusus输入jenis angka(untuk密码bertipe PIN) Button bertuliskan“登录” 表格布局 商业逻辑 登录按钮的IBAction 文本字段的IBOutlet Ngoding业务逻辑 演示! Buka Xcode,lalu buat项目iOS / Swift baru。 卢帕/贝拉Pernah膜吗? Silahkan mempelajari教程ini dulu。 挑战! Cari komponen 文本字段 dan 标签 ,自然布局dan ubah属性-nya hingga menjadi seperti ini: 贝贝拉帕(Beberapa yang harus diatur): […]
本文介绍了数字代理商如何考虑对其作品定价,以及您作为客户如何避免多付钱。 讨论的主题将为您提供知识,使他们可以明智地决定谁应该构建您的下一个Web或移动产品。 Building Block 1:每小时费率 代理定价的基本组成部分是“每小时费率”。对于海外开发商,这些费率可以低至每小时10美元。 在纽约地区,您可以从最负盛名的商店看到时薪高达$ 300 +。 通常,高利率的代理商过去曾与知名客户合作。 每小时价格低于125美元的商店可能会将大量工作外包给开发者价格较低的地区。 您将看到为什么不久之后我们进行这些计算。 以下是包含有关网络和移动应用程序开发机构的一些数据的图表,可以了解价格的变化情况: 您如何避免每小时价格过高? 具体建议:采取这些步骤,根据参与项目的每个人的履历,确定您每小时应支付的费用。 步骤1.了解每个员工的小时成本 假设一名具有5年经验的中级软件工程师每年的薪水约为13万美元(请注意:这可能会因技术,地理位置和众多其他因素而有很大差异)。 您总共要增加约20%的费用,才能获得运送员工的全部费用(工资税,保险等)。 在代理机构的情况下,工程师的安排可能只有80%的时间被安排,因为代理公司由于收入流过多而很少实现100%的安排。 同样,总收入增加了25%(= 100 / 80–1)。 完成乘法之后,每年需要除以大约2,000小时的工作量。 数学公式如下: $ 130K x 120%x 125%/ 2,000 = 每小时$ 97.50 对于低于此水平的任何小时费率,该机构甚至在扣除间接费用之前都在赔钱。 假设间接费用是费用的30%,则该机构每小时的总费用约为126.75美元,以使该机构收支平衡。 代理商需要做更多的工作以达到收支平衡,因此要多花几美元来计算您应该支付的费用(每小时约150美元) 。 第2步。弄清楚如何为项目中的人员进行此计算 大多数代理商不会告诉您他们为您的项目付钱给谁。 假设他们不愿意,请确保索要将要接触您的项目的每个人的简历,简历和LinkedIn个人资料。 掌握了这些信息后,可以通过在线搜索等价物并询问您在技术行业中拥有的任何朋友,可比较的人应该做什么来解决薪水变量。 根据技术,地理位置,工作历史和多年的经验,您应该能够很好地估算出年薪。 根据上面的公式进行数学运算,以得出适当的小时费率。 第3步。将您的项目人员每小时应花费的费用与您所支付的小时费率进行比较。 如果您收到的个人简历的工资暗示每小时工资率远低于您所支付的工资,则您应该引起担忧。 根据上面的通用示例,如果您为时薪为130ka的员工每小时支付150美元,那么您可能会获得一笔不错的交易。 如果您为这些相同的资源每小时支付300美元,则该机构将获得可观的利润。 构件2:估算 在确认小时费率之后,客户应考虑项目总成本。 为了进行估算,代理商或开发人员通常会按小时收费,然后乘以他们为该项目预期的工作时间。 基本估算的示例如下所示: UX / UI:80小时 […]
迅捷泛型 许多人可以理解泛型,阅读泛型代码并遵循代码,但发现使用泛型编写代码或避免使用泛型是很困难的。 让我们可以轻松地考虑适当地使用泛型。 Swift是强类型语言,也是静态类型语言。 当我的意思是强类型时,每个函数参数或返回类型都需要一个类型,并迅速检查传递/返回的值是否属于该类型,否则会发生编译/运行时错误。 当我说静态类型时,我的意思是swift仅检查所有这些编译时间,否则抛出错误。 好吧,如果您想告诉编译器我不确定我将处理的“类型”是什么,并且它可以是动态的? 多数民众赞成在我们排序到动态打字。 但是,使用像Swift这样的强静态类型语言,我们如何实现呢? 那就是泛型出现的地方。 假设您实现了可快速处理“字符串”的STACK,它将类似于以下内容: 现在,说我希望能够实现一个存储整数的堆栈。 最后,我将写另一个与上述完全相同的Stack数据结构,其中函数和返回类型的参数为“ Int”而不是String。 可以这样说,我可以根据需要的数据类型创建动态dataType结构实例。 当然,在实例化时,您必须指定要查找要存储的堆栈的数据类型。 在下面的代码中,其表示为。 注意:T可以是任何东西。 U也可以说G或A或ZZ或GENERIC。 注意:编写任何通用代码的最佳方法是,在我的案例String中编写代码以采用特定的数据类型,然后将其替换为T。在我们的示例中,定义Struct的定义方式为Struct GenericStruct 。 实例化时,请查看其用法。 GenericStruct ()。 任何与泛型 您总是可以说,好吧,我将通过使用下面的Any来解决此特定问题-> 那为什么要泛型呢? 好吧,它解决了特定类型的问题。 参见下文。 泛型基本上告诉编译器:“稍后我将为您提供一个类型,我希望您 在指定的任何地方 强制执行该类型 。” AnyObject基本上告诉编译器:“不用担心这个变量, 无需强制执行任何类型,在这里 我可以做任何想做的事情。” 如果要使用协议,泛型将如何适合那里? 这可能真的很有用。 这是associatedTypes和typealias出现的地方。 请查看以下内容,如何通过类型别名将协议中的项目与动态类型T相关联:
我一直在搜寻有关如何向iOS应用程序添加简单快速操作的简单教程。 这不会是动态的。 没有自定义图片。 这是可行的iOS快速操作的最简单的版本。 菜单中的东西 您需要做的第一件事是在您进行3D触摸时使某些内容显示在菜单中(我不确定该怎么称呼该动作)。 为此,您需要在应用程序的info.plist文件中添加一个条目。 使它看起来像这样: 基本上,您需要告诉应用标题。 然后,当有人执行此操作时,您想发送什么消息到您的应用程序。 对我来说,我将数字5作为字符串发送,我尝试使用数字,但是菜单项停止显示。 因此,我现在正在使用字符串。 这是当您“强制按下”时的样子吗? 在应用程序图标上。 不漂亮。 但这有效。 下一步是在有人按下该按钮时执行某项操作。 做某事 现在我们有了一个按钮,在点击它时我们应该做一些事情。 幸运的是,我们所需要做的就是实现一种方法: 在该方法内部,您将获得UIApplicationShortcutItem ,该对象将告诉您执行了哪个操作。 就我而言,该项目将是字符串“ 5”。 这意味着启动5分钟计时器。 而已。 谢谢阅读。 如果您想要一个Big Timer,那么它是开源的,并且可以在App Store上找到:https://github.com/joelklabo/BigTimer
我是一名应用程序开发人员,我的大部分工作都是围绕Android应用程序开发进行的。 但是,自从我开始使用MacBook和iPhone以来,我感到很受限制,因为我无法使用自己开发的应用程序。 我有两个选择: 1.购买Android手机并失去Apple为iPhone和MacBook提供的出色同步 2.学习iOS开发并开始为iPhone构建 我选择了困难的一个。 😅 选择来源 对于Android,我一直提到YouTube上的官方文档和Google Developer频道,但是Apple Developers的文档令我失望。 我已经有一个Android Nanodegree证书,而且Udacity的经验足以让我盲目地信任它。 因此,我报名参加了iOS Nanodegree,支付了费用并推出了! 课程内容 该课程分为以下课程,即 0.学习Swift编程 1.使用Swift进行iOS应用开发简介 2. UIKit基础知识 3.网络请求和GCD 4.数据持久性 5.最终项目 每节课的重点是iOS开发的重要方面,并有一个与之相关的项目。 三个月内在全新平台上的五个项目,呵呵! 接受挑战! 对于那些相信“ 谈话很便宜。 给我看代码” 。 aruke / iOS-Nanodegree-Projects Udacity的iOS Nanodegree项目的主存储库。 — aruke / iOS-Nanodegree-Projects github.com 项目1:完美音调 第一个项目是一个录制音频的应用程序,然后以不同的声音播放它。 是不是很酷? 当您使用UINavigationController,IBAction和IBOutlet,AVAudioRecorder并在其中以编程方式配置Segue时。 😜 我将其用于学习Swift语法以及与Xcode(用于iOS开发的官方IDE)一起玩。 本课介绍了Xcode和Swift游乐场。 它涵盖了使用布局编辑器进行的简单设计布局,编写用于布局的ViewController以及将它们与IBActions和IBOutlet连接的方法。 我很快完成了本课中的“完美音调”项目,这是我的第一个运行正常的iOS App。 项目2:Meme Me 下一个挑战是精通UI设计以及UIKit框架。 该项目引入了UITableView,UICollectionView,Tab […]
移动应用的成本首先取决于您要创建的应用类型及其要求。 大多数时候,我们与客户讨论他们的项目。 提出的第一个问题是制作一个应用程序要花多少钱? 在不知道完整要求的情况下,没人能给您确切的数量。 影响移动应用开发成本的因素 1.特征和功能 应用程序功能在移动应用程序开发的总成本中起主要作用,通常占60%至80%。 因此,要构建成功的应用程序,必须了解业务流程,定义未来产品将如何简化工作流程以及必须达到的目标。 2.战略规划与需求分析 首先,我们需要计划项目的各个方面。 通过分析业务和竞争对手的业务,我们应该开始我们的战略计划。 当有人谈论您的业务时,您肯定会感觉良好,但是当他们谈论您的成功和工作时,感觉会好得多。 我们随时准备帮助您通过业务应用程序取得巨大成功。 3.线框 线框图是移动应用程序开发中最重要的方面之一。 在为移动应用程序设计UX时,我们需要考虑一些事项,例如用户界面,用户交互,微交互。 针对不同平台具有不同功能的移动应用程序。 在跨所有平台和屏幕尺寸提供最佳UX的同时,我们考虑了所有方面。 4.设计 移动应用的外观受到了最大的关注。 用户通常花费2至3分钟的薄荷糖来检查它是否有趣。 我们会处理图形图像或UI,它们的质量很差,因此用户会立即从其手机中删除该应用程序。 5.发展 在开发领域,所有编码工作将根据UI / UX设计和功能来完成。 在巩固了移动应用程序设计之后,我们将创建一个健壮的体系结构以进行进一步的开发。 在构建移动应用程序时,我们遵循三叉戟质量准则。 任何类型的错误都可能导致上线阶段的延迟。 在此阶段,应以更高的关注度和准确性来实施它。 费用还受到付款集成,集成第三方工具,后端开发,应用内购买,Web服务开发(如接受信用卡付款,电子钱包)的影响 6.测试 开发您的业务应用程序时,我们需要注意。 在交付您的项目之前,我们应遵循严格的准则,以完成单元测试和质量测试; 如果客户要求,我们也会执行自动测试。 7.上线 在此阶段,需要针对不同的客户群采取各种同时行动。 考虑了很多因素,例如创意内容,搜索引擎优化,印刷媒体营销,社会营销,品牌管理,因为与它们互动需要花费各种费用。 该应用程序上线并移交给客户后,项目团队将确保该应用程序的技术可行性和部署。 8.维护与支持 如果项目上线,并不意味着该项目将一次全部完成。 客户通常需要根据从各个利益相关者那里收到的反馈来添加新功能,升级UI / UX等,以吸引越来越多的用户使用他们的应用程序。 成本因素也与现阶段相关。 我们会为您提供售后支持和维护; 我们始终提供移动应用程序的端到端解决方案。 维护团队会为您的移动应用程序提供所有必要的支持。 应用类型 有各种不同的应用程序,我们在这里提到最流行的应用程序: 基本功能应用程序-这意味着 简单实用的功能,例如iPhone电子邮件。 基于内容的应用程序-依赖于用户希望访问的内容的应用程序,例如旅行指南,导航应用程序,查找地点等。 完全动态的应用程序-用于访问外部服务(例如Twitter,Facebook等)的应用程序。 实用程序-纯粹是功能正常的应用程序。 […]