Tag: 移动

Coisas简单:Abrindo url dentro do app iOS c / Swift

不存在的事实,存在的主体,“简单的”和“犯罪行为”。 Mesmo com toda afrustaçãoedecepçãoqueurge com qualquer coisa que seja que tenha virado o mais puro caos,eu aprendi aproveitar and canalizar essamotivaçãopara algo e eis que vem o post de hoje。 Vamosentãopegar是一个法式面包,也可以像巧克力或巧克力那样用碗装。 简单的平面图: Carregar um网站usando HTTP,无HTTP O app deve funcionar em 8.3+ 问题: WKWebView可以替代UIWebView,可以在8.0 MAS上通过接口构建器自定义视图,或者通过11.0版的常规更新来替代视图。 错误:类不可用:iOS 11.0之前的WKWebView(以前版本中的NSCoding支持被破坏) 2.在iOS 9.0上使用HTTP的一部分,请使用NSAppTransportSecurity com禁止任何致命负载。 Mãosnocódigo Crie um projeto qualquer,pode […]

iPhone X在这里; 品牌现在该更新其iOS应用了。

与iPhone X不兼容的应用可能通过以下方式影响用户体验: 圆角和缺少主页按钮可能会切断应用程序的某些部分,尤其是通常位于许多应用程序顶部和/或底部的导航栏 边缘到边缘的显示将迫使不兼容的应用进入信箱模式,从而在屏幕的顶部和底部创建空白 状态栏的高度将随新iPhone X的变化而变化,这意味着应用程序的顶部导航或资产将被切断,并且无法正确显示 应用程序的屏幕边缘手势可能会覆盖或干扰新的系统级手势,从而使用户可以访问主屏幕,应用程序切换器,通知中心和控制中心 以前与旧型号iPhone的@ 2x分辨率和sRGB彩色显示器兼容的图像在iPhone X上新的@ 3x分辨率和P3色彩空间显示器上将以较低的质量显示。 学到更多 为了充分利用新的高分辨率边缘到边缘显示器,应将应用程序设计为支持当前和将来的iPhone设备的各种纵横比和方向。 您的团队还应在以下方面考虑应用程序的兼容性:屏幕分辨率,布局,屏幕大小和安全区域。 有关如何针对新iPhone X优化应用程序的更多详细信息,请单击下面的链接,以获取《 iPhone X设计和开发注意事项指南》的副本。 该指南涵盖了新的iPhone X将如何影响用户的应用程序体验,以及设计和开发注意事项,可帮助您针对新的边到边屏幕体验优化应用程序。 TribalScale具有协助公司适应不断变化的硬件和软件规格的历史,并且擅长为iOS创建流畅的应用程序,这些应用程序会随着时间的推移而不断发展和完善。 我们的产品经理,设计师和工程师将与您的团队合作,以了解您的应用将受到的影响,从而为更新应用创建最佳策略。 加入我们快速发展的部落, 并在 Twitter , LinkedIn 和 Facebook 上与我们联系 ! 在我们的 网站 上了解有关我们的更多信息 。

新的iOS应用程序? Objective-C还是Swift?

就像面对空白画布的艺术家一样,开发新的移动应用程序的开发人员必须首先选择一种媒介来构建其数字创作。 与本地iOS应用程序开发有关,交易的主要工具是Objective-C和Swift编程语言。 如果我们的计划不够干净,我们将不得不考虑现有技能集的价值,因为它们与维护现有代码库有关。 但是,出于本文的目的,我们将仅关注新建项目。 在2014年6月之前,我们的决定很简单,因为我们可以用Objective-C程序员的身份广泛地绘画所有iOS开发人员。 Objective-C起源于1980年代初期-基于1970年代初期的C编程语言。 它与C的关系的主要好处是C ++库可以与Objective-C代码一起使用。 超过30年的发展已融入到Objective-C中,这巩固了它作为一种既定且稳定的编程语言的地位。 自2008年7月应用程序商店问世以来,已经发布了超过1,000,000个Objective-C应用程序。 在Stack Overflow上标记的超过25万个问题和Amazon.com上的数百本书中,可以明显看出Objective-C开发人员社区的经验。 iOS开发者社区在2014年6月分叉,当时苹果正式宣布Swift作为Objective-C的替代品。 自发布以来的800天内,Swift已大大超越了Objective-C,成为iOS应用程序开发人员的首选编程语言。 衡量Swift进度的一种方法是通过TIOBE编程社区索引。 这是每月的领头羊,旨在通过客观标准来衡量编程语言的受欢迎程度。 Swift与Objective-C的关系的另一项检验是通过Google趋势。 这项措施会在定义的时间段内捕获感兴趣的字词的网络搜索流量。 通过这些指标建立的模式是,我们已经达到了一个转折点,因为Swift与开发人员的思想份额有关,因此它已经超过了Objective-C。 转移到Swift的原因是什么? 作为开发人员和架构师,与我最共鸣的是Swift提供的超过Objective-C的简便性。 正如1977年苹果计算机公司的早期口号一样, “简单是最终的复杂程度。” Swift在以下方面与Objective-C相关,产生了简化的好处: 由于语法更像脚本,因此代码更具可读性。 这也有助于减少初始学习曲线。 与Objective-C的冗长性相比,您编写的代码更少。 您甚至可以将表情符号字符用作变量名… 通过iPad上的Swift Playground应用程序可以证明Swift是交互式的。 Swift编程语言是开源的。 这使语言同行评审,透明,并使社区更加参与。 您可以通过在Github上为Swift做出直接而直接的影响。 展望未来,很明显,书的作者和视频教程已经迁移到Swift。 就数据结构和算法的性能而言,与Objective-C相比,Swift几乎可以与之媲美或更好。 Swift还为创建新应用程序提供了机会,这些应用程序可以重构旧的Objective-C项目。 用苹果自己的话来说, “ …我们现在可以为Apple软件开发的未来引入一种新的语言…所有这些使Swift成为开发人员和Apple未来的可靠投资。 Swift是编写iOS,macOS,watchOS和tvOS应用程序的绝妙方法,并且将随着新功能的发展而不断发展。 我们对Swift的目标是雄心勃勃的。 我们迫不及待想看到您使用它创建的内容。” 如果您要启动新的本机iOS应用程序,则应该客观地将Swift视为制作下一个杰作的主要工具。 参考文献 Swift –苹果开发人员 Swift是一种功能强大且直观的编程语言,适用于iOS,OS X,tvOS和watchOS。 编写Swift代码是…… developer.apple.com Objective-C –维基百科,免费的百科全书 GNU项目基于OpenStep…开始了其名为Cocoa的自由软件实现的工作,该实现名为 GNUstep。en.wikipedia.org TIOBE索引| […]

Keepsafe Unlisting在这里

在Keepsafe,我们的使命是使所有人的隐私和安全变得简单。 现在,人们比以往任何时候都需要易于理解的解决方案来控制其数字隐私。 今天,我们推出了一个名为Keepsafe Unlisted的新iOS应用程序:私人文本和电话的短期和长期电话号码,以保护您的个人信息。 随着Keepsafe Unlisting的推出,我们欢迎另一种产品进入我们的简单隐私解决方案系列。 近年来,我们开发了Keepsafe Photo Vault,以帮助人们保护其设备上的私人照片和视频。 我们制作了Keepsafe App Lock,以保护人们的移动应用程序。 去年,我们推出了Keepsafe VPN,以帮助人们安全和私密地浏览。 随着Keepsafe Unlisted的推出,我们还宣布了Keepsafe的第一笔战略收购。 Keepsafe最近收购了广受欢迎的iOS应用LineLine(对我们这个神话般的创始团队来说是幸运的)。 LineUp具有我们敬佩的特征:它优雅地解决了人们迫切需要的隐私保护,其应用程序设计易于使用,并且定价透明。 今天,我们已将LineUp更名为Keepsafe Unlisted。 每当您创建一个Keepsafe帐户(无论是用于Photo Vault,App Lock,VPN还是未列出)时,您的帐户都可以在我们所有的应用程序中使用。 Keepsafe Unlisted还具有一个新的应用程序图标,Keepsafe的标志外观和更加直观的设计。 不公开的工作方式如下: 1.在美国或加拿大的任何位置选择电话号码。 2.轻松发送和接收私人文本和照片。 3.通过呼叫转移和语音邮件等功能来控制您拨打和接听的VoIP呼叫(并且永远不会出现在电话账单上)。 4.根据需要购买文字和电话信用。 使用该应用的人告诉我们,“不公开”通过以下方式保护他们在当今世界中的地位: 在网上约会或买卖时保持安全。 将个人生活和工作生活分开。 出差,开展业务并培养与国外的人际关系。 每个人都应该能够在控制他们共享的个人信息的同时,享受健壮的在线生活,无论他们身旁还是像数字游牧民一样生活。 这就是为什么我们通过Keepsafe Unlisted将第二个电话号码和刻录机电话应用程序纳入主流的原因。 这是人们保护自己的身份和个人隐私的新途径。 我们想听听您如何使用“不公开的Keepsafe”,以及我们如何改进产品并满足您的其他隐私需求。 加入Keepsafe的隐私权运动,对我们的产品进行Beta测试,并与我们谈谈您的体验。 Keepsafe的收购和Unlisted的推出仅仅是我们实现愿景的开始。 在接下来的几个月中,我们将把Unlisted引入Android,并增加更多的隐私和安全功能。 最好的还在后头!

MVVM + FlowControllers路径的动机–杰出发明–中

有许多种构建iOS应用程序的方法。 MVC(模型视图控制器),MVP(模型视图演示者),MVVM(模型视图模型),VIPER(视图交互器演示者实体路由),Redux……当然,您可以命名其他许多名称。 我已经编写iOS应用程序已有一段时间了,并且我注意到MVVM + FlowControllers方法对我来说非常有效。 在这篇文章中,我想重点介绍“为什么?”,而不是其他方法,以及“如何?”,我在自己的应用程序中使用了它。 为什么? 开始 开始iOS开发通常与学习基本模式有关,您可以使用这些基本模式来解决在尝试在应用程序中创建第一个屏幕时遇到的问题。 MVC很可能是第一个处理您的视图和逻辑的模式,该模式在iOS开发人员中非常流行(不仅限于它们)。 这主要是由于Apple在UIKit框架和您可以在其教程中找到的代码示例中大力推广了这种模式。 MVC不好吗? 是! 这是最糟糕的! 这会导致Massive ViewControllers出现在您的应用程序上……开个玩笑…… 不,这不对。 当我最近阅读“关于iOS应用程序体系结构的很多话”一文时,我感到非常高兴。 我不能说我完全同意那里所说的一切,但是我可以肯定地认同某些部分。 为什么我很高兴阅读这篇文章? 因为这句话: “没有人会强迫您在一个控制器中实现多个数据源。 在viewDidLoad中发起网络调用。 在UIViewController中解析JSON。 用Singleton实例硬连接View。” 许多开发人员将MVC的混乱和混乱归咎于MVC,而这实际上是由开发人员自己造成的。 如果您缺乏纪律,那么即使VIPER也无法为您提供帮助。 某些模式可能使更容易正确地构造代码并保持代码整洁,但是是否遵守纪律始终取决于您。 如果最后还不错,我应该使用MVC吗? 如果我是一名熟练的顾问,我可能应该说“这取决于”。 MVC显然有其优点和缺点,我敢打赌,您会发现许多很棒的文章将帮助您下定决心。 为什么选择MVVM? 如果MVC还不错,那么我遵循MVVM路径的动机是什么? 仅举几个例子: 它使我可以将代码的很大一部分远离UIKit (这是一种可以更快地测试此代码的功能–作为macOS框架)。 它使我能够测试驱动视图的逻辑。 它与反应式编程方法非常有效(但您无需使用它们即可从MVVM中受益) 所以现在,在采用了MVVM模式的原理之后,我能够拥有被动视图(尽可能愚蠢)和驱动视图的逻辑,这些逻辑也与UIKit分离。 为什么不采用像VIPER这样的模式真正很好地定位的划分方法呢? 好吧…你可以做到的。 我以前从未在大型项目中使用过VIPER(很高兴听到您对此的看法!),但是,我想说这种模式对于中小型应用程序可能是一个简单的过大杀伤力。 我认为,如果您想让您的解决方案易于理解,同时又能够轻松测试您的代码,并与依赖于UIKit的代码区分开,那么MVVM会非常有效。 流量控制器 使用它们的动机是什么? 在ViewController“ A”内找到负责转换到屏幕“ B”的代码时,这并不稀奇。 这种方法的问题是,突然之间,您在这两个实体之间建立了紧密的耦合,如果您想在其他情况下拆分或重用它们,可能会遇到麻烦。 好吧……问一个问题总是很好–这是一个问题吗? 如果您正在做一些简单的事情,那么使用这种导航可能会很好,但是,如果您要处理更复杂的事情,添加flowController肯定会有所帮助。 请记住,添加flowController并不是一项高成本的任务-即使在简单的应用程序中,我也倾向于使用它们,因为它们可以帮助我更好地组织代码并让我对应用程序中导航的工作方式有个很好的了解。 将flowController添加到您的应用将帮助您: 使屏幕彼此分开,这将使您可以模块化并轻松地重复使用它们。 控制应用程序各部分的流程(您可能会有许多不同的flowControllers) […]

类型转换:* [as!] * vs. * [as?] *

类型转换是一种出色的工具,可帮助实现OOP(面向对象编程)。 类型转换是检查实例类型的方法,|| 将该实例视为与其自身类层次结构中其他地方不同的超类或子类。 Swift中的类型转换使用is和as实现? / 作为! 操作员。 这两个运算符提供了一种简单而富有表现力的方式来检查值的类型或将值转换为其他类型。 但是,我们将仅专注于吗? 和! 如? :预期元素的可选。 如果要实现这一点,我们会说:“嘿,我不确定所说的元素是否属于这种类型。 如果不是,则返回nil并且不要使我的应用程序崩溃。” 如! :强制展开元素的可选。 如果要实现这一点,我们会说“嘿,我确定这个元素是这种类型的,我不需要返回nil,因为它将起作用。” 投射仅通过两种方式起作用: Down Cast:从父类转换为子类。 快播:从子类到父类。 上投: 在此示例中,我创建了两个类。 父类:人类,具有子类(成人)。 我创建了👩🏾,并将其设置为Humans,其子类为Adults。 从这一点开始,无论类型如何转换? 要么 ! 将起作用,因为父类型为Humans的is。 但是,当我们看待我们设定为重视人类的要素时,有一个警告, 但却是一个好警告。 不,严重的是,此错误仅警告我们:从成人到成人的有条件强制转换将始终成功。 因此[!]运算符与否,我们知道这将毫无错误地发生。 下调: 在此示例中,我创建了三个类。 超级类:人类,子类:成年人,子类:TinyHumans。 当我尝试给它键入Adults时,它仍然以TinyHumans的形式返回。 但是,一旦我将值更改为Adult并尝试将其类型转换为原始类型并将其子类化,则返回nil。 哦,是的! 当我申请为! 在我的代码中,它显然给了我一个错误,我们知道会发生错误,因为? 返回零。 所以不要以这样沮丧的年轻人而结束….. 我们将用作? 永远永远解决我们的类型问题。 如有任何疑问或意见,请输入Google! 😀

YNAP上时尚的iOS应用测试的重要技巧

握住移动设备就像将整个词掌握在手中一样,它是使我们能够访问所需所有内容的枢纽。 不再只是发送短信或打电话,如今,即使通过手机购买商品也正迅速成为一种习惯,高价值的奢侈品也不例外。 我在2012年至2017年期间担任移动测试人员。 在那个时候,移动流量和销售额从微不足道变成了大多数零售商最重要的单一渠道。 这完全与以下事实有关:设备大规模发展,变得越来越强大,从而允许开发更复杂的移动体验。 这使我的工作变得更加困难(也更加有趣),因此,这是我多年来作为移动测试人员的重要秘诀,可确保您构建的任何移动应用程序既流畅又可靠。 1.建立强大的测试基础架构 所有最基本的技巧,但可以说是最重要的,是确保您已建立了强大的测试基础结构。 如果您没有完整的移动指标视图,您将永远无法理解事情是否正常运行。 在我的时间测试中,我们部署了一个名为Fabric的工具-模块化移动平台,该平台与Answers(为平台提供动力的分析引擎)和Crashlytics(崩溃报告解决方案)相结合。 Fabric Answers会向我们显示我们的日常活跃用户,实时使用我们的应用程序的人数,正在使用的设备等等。 我们甚至可以看到用户升级到最新版本所需的时间,从而为我们提供了非常有用的浏览行为概述。 结合Flurry和Omniture等其他分析工具,我们可以对用户的旅程和改进之处进行更深入的了解。 2.模拟和监视,监视和模拟,重复 测试就是在尽可能多的场景中运行并解决过程中出现的所有问题。 我可以在办公室重现一些崩溃,向我的团队演示为什么可能会发生此问题,并进行测试以确保不再发生此问题。 但是,每个设备的使用方式都不相同,因此完全不可能模拟会导致崩溃的每个可能情况。 如果尝试这样做,则永远不会发布应用程序,因此它是找到平衡模拟场景并监视会导致崩溃的新场景的平衡。 使用Crashlytics这样的平台将使您能够检查应用程序的实时性能以及这对用户体验的影响。 将其设置为在发生崩溃或问题时可以接收直接通知,使您作为测试人员可以立即进行监视和响应。 设置有关如何确定工作优先级的规则也是关键。 例如,如果是重大崩溃,请修复它并尽快发布该应用程序的新更新。 如果是次要的,请制定计划以在以后修复。 测试崩溃和故障以外的事物也是关键。 分析应用程序会话时长以查看行为是否发生了变化(例如会话时长的增加),使我们能够相应地调查和优化我们的应用程序。 测试可以是主动的! 3.实际测试 在以技术为中心的办公室里工作,很容易忘记您可能拥有绝对一流的互联网连接。 但是在这种环境中测试应用程序很少会显示出用户在通过更不可靠或间歇性的互联网连接使用应用程序时可能会遇到的实际问题。 例如,某些产品图片或视频可能不会显示或下载时间太长,购买路径可能存在问题,即某个页面无法在用户浏览的最后一件商品上显示,或者该应用可能完全崩溃互联网连接不良时。 那么,如何在现实环境中测试应用程序呢? 很简单,退出您的工作场所并进入现实世界。 我参加过火车旅行,在高耸的建筑物中长途跋涉,甚至要求我丈夫开车两次通过隧道来测试应用程序。 需要注意的关键是,当连接在Wi-Fi,3G和4G之间切换时,这通常会使应用程序陷入困境。 但是当然,由于在地上并不总是很方便-尤其是在伦敦下雨天,将真实的测试与模拟的连接设置进行平衡,可以使您进行广泛的测试。 拥有配备设备和模拟器的储备充足的测试实验室是实现此目标的关键。 4.并非所有屏幕都相等 每年发布如此多的不同设备,屏幕发展迅速,分辨率不断提高,分辨率越来越高,令人赞叹的功能(如多点触摸)和有趣的怪癖(如iPhone X的缺口)。 但是,尽管不断发布具有新屏幕和新功能的新设备,但旧设备(尤其是平板电脑设备)的使用时间却越来越长,构建可在所有设备上提供一致,高质量用户体验的应用变得越来越重要,但也至关重要。保持敬业度和忠诚度。 测试时,请确保通过触摸交互正确处理了应用程序中的所有表单字段,选择列表,按钮和链接。 该应用程序还需要一次处理多种交互,例如多点触摸,捏缩放等,并且最重要的是,分辨率需要与所使用的每个设备完美匹配,以向用户提供最佳的视图。 5.善待电池 给手机充电很不方便,因为它将移动设备锁定在一个位置,这完全破坏了设备的作用。 因此,如果您的应用耗尽了用户的所有电池寿命,他们很可能会停止使用它。 在测试时,请注意您的应用在以下情况下的性能: ·设备正在充电吗? ·电池电量低吗? ·启用了低功耗模式,该模式限制了手机的设置,例如Wi-Fi连接,蓝牙或3G / 4G数据 如果您在努力维持电池寿命,最好的方法是检查是否有任何第三方SDK消耗大量电量。 最后,记住为什么要测试您的应用程序 该博客涵盖了测试应用程序时的一些最重要的考虑因素(还有许多这里未提及的因素,例如推送通知,应用程序更新,设备方向,设备设置,位置等等!)。 […]

[iOS]评论耦合器文件委托和关闭?

NATIF的toujours上的dans notrelancéesur le mobile上的aujourd’hui的Salut les Astronautes。 Cet article s’inscrit dans lalignéedes 2précédents,et il estimpératifde les avoir lu pour comprendre ce dont il s’agit ici: http://blog.eleven-labs.com/fr/delegates-closures/ http://blog.eleven-labs.com/fr/android-listeners/ 共有2条个人评论文章,请参见cel pari-ci va parler的著作。 -Mais oui在Sait上发表评论,alezdépêche-toilà在veut savoir上发表评论,评论员在iOS cette fois-ci上听了。 -好的,请重新申请小技巧。 注释ça va se passer: Bon总理文章,Pour que tout le monde soit heureux,Jum vais vous produire du DUMMY代码,Swift。 iOS开发者Dans le monde […]

另一个干净的架构

你在跟我开玩笑吗? 还没有足够的干净架构模式吗? 是的,有。 像VIPER / Riblets一样,它们都是完全相同的清洁体系结构原理的不同方法,但是它们在细节或处理某些元素的方法上有所不同。 一切始于著名的Bob叔叔的文章,因此请务必查看一下。 我们在这里介绍的是我们在Tooploox成功介绍的一个(感谢出色的Jorge Ortiz研讨会,不要错过他的作品)。 事实证明,这对我们的工作流程和代码质量非常有用,我们希望通过本系列文章分享一些经验。 为什么架构很重要? 在考虑我们的应用程序体系结构时,我们不应该考虑是否使用一种,而是要使用哪种。 有效的体系结构有助于创建结构化,易于理解的代码,从而降低维护成本。 由于每个人都可以独立工作,因此将所有模块模块化可以使团队合作更加轻松和富有成效。 它有助于设计解决方案并减少出错的可能性。 不必担心事物如何协同工作或如何连接某些零件,您可以专注于实际的逻辑。 最后,它将项目管理提升到一个新的水平,即由于在熟悉的环境中使用了经过验证的模板,因此计划和估算更加准确。 它还降低了新团队成员的进入门槛,并使团队更加灵活。 那么,为什么不简单地使用MVC,MVVM呢? 为什么还要另一个复杂的解决方案? 别误会,MVC和MVVM是有效的体系结构。 他们各有优缺点,可以用来创建出色的解决方案,但它们确实有局限性。 通常,MVVM很难扩展。 毕竟,移动应用几乎绝不是仅有的一些功能和几种视图。 随着功能数量的增加,MVVM开始变得难以维护,视图模型变为大规模视图模型,因此很难将所有内容按原样分开。 另外,如果您关心单元测试,那么MVC / MVP / MVVM也不是最佳选择,因为出于测试目的而分离元素和模拟依赖项要困难得多,并且每个组件往往都有多重职责。 如果您曾经使用过MVVM,则可能已经注意到它不是完整的体系结构。 它缺少诸如路由或依赖性管理之类的一些基本层,并且通常通过引入协调器或强制破坏封装并使组件以非结构化方式相互通信来完成。 通过使用干净的架构,您的代码将变得更加模块化,结构更好和高度可扩展。 每个元素都是轻量级的,并且遵循(至少尝试)遵循单一职责规则。 通过控制反转,各层具有良好的分离性,因此组件易于更换。 使用这种结构编写单元测试很简单,可以模拟依赖关系,并且功能简单且易于进行单元测试。 通过松散耦合元素,可以对同一特征进行并行编码。 只需就协议和合同达成协议,然后做好您的工作即可。 使用功能要容易得多,因为您可以一次将精力集中在一个问题上,而不必关心其他任何事情。 硬币的另一面。 但这确实有一些缺点。 它很复杂,一开始有时很难理解,而且入门门槛很高。 它也有点肿。 您将创建很多不同的协议,类,工厂,并且您将必须管理所有文件。 这不是轻而易举的事情(记住缺乏适当的反思并不能帮助迅速进行依赖注入管理)。 这些文件/类中的许多都是简单的传递实体,因此有时感觉像是在浪费时间,但这是有原因的。 它还有点违反框架和官方准则。 Apple API被设计为可与MVC配合使用,因此有时您必须要有一些技巧才能使其与干净的体系结构相处。 最终,我们发现所有的努力都是值得的,缺点并没有真正掩盖我们作为团队所获得的收益。 确实,关于干净架构的资源并不多,可以通过实际示例逐步解释一切。 我们认为这是有时在移动开发中忽略更复杂的体系结构的原因之一。 我们想改变这一点。 让我们开始吧 干净架构的主要重点是将模块分为多个层:连接器,演示者,视图,用例和网关,这些层符合SOLID原则。 […]

代理NSNotification — Desenvolvimento iOS

Qualquer desenvolvedor或iOS设备。 观察者的观点在质量上和精神上都有所不同。 代表们 委派参会人员或委派代表参加辩论。 您可以使用本机或本机,也可以使用本机。 Os代表funcionam da mesma forma,el​​es criam um link entre dois objetos enãoépreciso saber qual odepédedé,se simplesmente实现者或协议。 NS通知 作为通知(NSNotification)的比较,请在es发行后将其分发给其他人。 Ques escuta pode ignorar a mensagem ou podem fazer algo com ela。 作为通知(NSNotification)的许可,质量反馈已得到普遍存在。 Depois de uma longa busca na Internet sobre esse assunto posso dizer que na maioria dos caso o Delegate […]