Tag: Apps

企鹅俱乐部岛应用程序

迪士尼全新的Club Penguin应用程序将于本周重新发布,关于Club Penguin Island应用程序,我们有很多事情要与您分享。 Club Penguin App(曾经称为My Penguin)是Club Penguin的免费便携式应用程序,已于2013年5月9日针对Apple小工具全面启动,并于2014年12月18日针对Android设备全面启动。 该应用程序对于任何先前提到的具有iOS 7或Android 4.0.3或更高版本的工作框架的品牌都很好。 尽管iPad于2013年5月9日退市,但该应用程序仍可在2014年4月16日下载到iPhone和iPod。 该应用程序的客户可以使用几种独特的语言进行播放,例如英语,法语,德语,葡萄牙语,西班牙语和俄语,其中绝大多数语言都可以通过企鹅俱乐部的一般改编获得。 CLUB PENGUIN APP的功能 加入一个繁荣的社区,在那里当地人和有活力的新移民都得到了很好的处置 与企鹅同伴一起调查岛屿。 跳上钻石,在潮汐池塘中驰spring,或分享一些切达干酪! 制作和定制具有无限混合效果的前卫服装,以打造出您非凡的风格 查找旅程,罕见的惊奇,奖励和硬币! 使用聊天功能,有趣的表情符号和3D活动传达所需的内容 。 观看音乐会或参加演出! 加入不需要聚会而结束的不同企鹅! 每天探索新领域,例如登上舞台,从披萨店中赚钱或参加聚会! 价钱 €4.49 EUR /月 $ 4.99 USD /月 $ 6.49 CAD /月 $ 6.49 NZD /月 £3.99 GBP /月 $ 6.49 AUD每月 *从iTunes帐户中扣除费用后,将提供7天的免费试用期。 兼容性 iOS 8以上的所有iPhone,iPod Touch和iPad均可使用此应用程序。 iOS最新评论 […]

UIGestureRecognizer:теория,практика,кастомизация

ПредставляяпервыйiPhone于2007年年初发行,СтивДжобсапеллировалкустареваниюконцепциифизическойклавиатуру Сэтогомоментанаразвитиеустройствскачественнымитачскринами,позоои Теперьпалец – главныйинструментуправлениядевайсомимыможемтапатьпокнопкам,свайпатьсписки,пинчитьфотографии…Давайтеразберемсякакэтореализованососторонысофтаинаучимсяиспользоватьвсюмощьмеханизмараспознаванияжестов。 UITouchиегообработка Нодавайтепопорядку。 Передтем,какначинатьраспознаватьжесты,надопонять,каквообщеприложениеполучаетинформациюокасаниях,свайпах,нажатияхнаэкраниктоихобрабатывает。 Чтопроисходит,когдапалецпользователякасаетсяэкрана? Системасоздаетобъекттипаевоетере Этозначит,чтонавремявсейцепочкисобытий “палецкоснулсяэкрана→палецдвижетсяпоэкрану→палецоторвалсяотэкрана” длякаждогопальца,касающегосяэкрана,существуетуникальныйобъектUITouch。 Далее,используямеханизм命中测试’,находитсясамаяглубокаявиирархииUIView,框架которойсодержиевсеб ПолученнаяUIViewстановитсяfirstResponder ,使用UITouchипрокидыватьихдальшепоresponseerChain 。 Дляобработкипоступающихсобытий,UIViewпредоставляетнесколькометодов: touchesBegan(_ touches:设置,并带有事件:UIEvent?) —началокасания(экранакоснулисьпальцы) touchesMoved(_ touches:Set ,事件:UIEvent?) —изменениепараметровкасания(позициянаэкране,сила(ForceTouch)) touchesEnded(_ touches:设置,带有事件:UIEvent?) —конецкасания(пальцыбылиубранысэкрана) touchesCancelled(_ touches:Set ,事件:UIEvent?) —отменакасания(далеерассмотрим,чтоэтозначит) ТаккакэкранiPhoneподдерживаетмультитач,товодинмоментвремениможетизменитьсясостояниесразу Например,еслипользователькоснетсяэкранадвумяпальцамиодновременно,системавызоветtouchesBegan лишьодинраз,новомножестве 设置 мыполучимдваобъекта—图库矢量图片。 Первыетриметода( 的touchesBegan,touchesMoved,touchesEnded)отвечаютза“нормальный”жизненныйциклUITouchивызываютсяприначалекасания,измененииегопараметров(позициянаэкране,силанажатия)иконцекасаниясоответсвенно。 Однако, 触摸 выбиваетсяизихряда已取消。 Насамомделе,концомжизненногоциклаUITouchможетбытьнетолькофизическийконецжеста,ноикакое-либопрограммноесобытие,вследствиекоторогосистемабудетвынужденапрерватьобработку данногокасания 。 Этоможетпроизойти,например,вслучае,еслипоявилсяинтерфейсвходящегозвонкаипродолжениеобработкикасаниябудетнекорректным – пользовательуженаходитсявконтекстедругогоприложения(телефон)。 Ожидается,чтоприполученииtouches已取消 приложениеотменитвседействиякоторыемоглибытьпротевреивведен。 Дляпониманиялогикиэтоготребованиярассмотримкнопку。 Пустьпользовательнажалнанее,ноещенеподнялпалецивэтовремяпроисходитвходящийзвонок。 ЕслиобработатьtouchesCancelledаналогичноtouchesEndedивызватьобработчикнажатиякнопки,топослеокончаниязвонкаивозвратавприложение будетпроизведенокакое -тодействие,котороепользовательмогнеожидать。 […]

iOS开发日记-第2周

这次我的职位很晚,但是昨天德国在世界杯比赛中德国对墨西哥(0:1)的糟糕表现后,我非常疲惫。 我本周了解到… 视图和控件 自动布局,堆栈视图和尺寸类别 我这周最努力地与… 游乐场!!! 😠 如何修复永久运行的游乐场 我真的很喜欢Playgrounds,并且可以运行Swift代码并立即查看结果,但是本周我遇到了一些奇怪的行为。 打开新的Playground并编写一些代码后,Xcode突然崩溃,或者Playgrounds永久卡住。 我几次重新打开Xcode,但是每次都发生相同的问题。 我感到非常失望,因为我认为Playgrounds是探索Swift编程语言并让每个人都可以访问编程的好工具。 但是目前,结果恰恰相反。 经过研究,我想出了一个解决方案。 将Playground从自动运行更改为手动->按住左下角的小箭头 退出Xcode 在活动监视器中强制完全处理com.apple.coresimulator 重新启动Xcode 这应该可以解决问题,但是每次进行一些更改时都必须手动启动它。 了解更多信息。 Xcode游乐场卡在“运行游乐场”或“启动模拟器”上,无法运行… 每次我创建一个新的游乐场以测试一些代码时,Xcode都会卡住并且不会运行该代码。 只是… stackoverflow.com 我希望苹果能尽快解决此问题,因为现在Playgrounds与使用Swift进行iOS开发毫不费力地相反,并且通过此修复,您可以在进行更改后松开热装。 😞 参加可可豆聚会 上周三,我去了Cocoaheads在柏林的Sauce Labs办公室聚会。 这是我第一个iOS开发人员见面,所以我感到非常兴奋。 地点是美丽的,人民很好和善良。 拿了一片比萨饼和一瓶啤酒后,我准备好进行演讲了。 丹尼尔·保卢斯(Daniel Paulus)谈论了反向工程iOS内部的实用方法,增强现实:Berta Devant的《从设计到开发》,以及鲍勃·戈德温(Bob Godwin)的Swift关联类型设计模式。 我必须承认,第一个和最后一个谈话在我目前的水平上已经取得了很大进步,但是所有主题仍然非常有趣,我想稍后再回到此以进一步了解它。 每个月都有另一个聚会,我期待下一个聚会。 如果您有兴趣,请访问https://www.meetup.com/de-DE/Cocoaheads-Berlin/。 构建我的第一个应用 为了练习现在正在学习的内容,我想开始我的第一个项目。 我完成了一些小型指导项目,产生了示例应用程序,但是这次我想启动自己的应用程序。 这个学期我要参加关于计算(或理论计算机科学)基础知识的讲座。 对我来说,绕开像自动机理论这样的超级抽象主题是非常具有挑战性的。 此外,还有许多符号和定义很难记住。 对每个主题都有一些易于理解的总结,以及符号和定义的集合,将是很好的。 我的目标是为此目的创建一个简单的应用程序,并将其分发到App Store中,以帮助其他学生和我自己。 在德语中,我们将该主题称为“信息基础理论”,它将转化为理论计算机科学。 在uni,我们将其缩写为“ TheGI”。 因此,名称将为“ TheGI-App”(直到我会发现更好的东西)。 本周目标 制作TheGI […]

AR @ wehkamp

我在WWDC 2017 作为我个人的背景故事,当时我在VWO 4中,至少可以说我度过了美好的一年。 自从我4岁开始学习以来,学校一直是我生活中的“问题”,而此时,我的“水桶即将溢出”。 我感觉不舒服,从字面上想起每天上学和变得不快乐的事实,我已经厌倦了。 让我前进的一件事是编程。 我于2015年开始进行iOS开发,几个月后发布了我的第一个应用程序,直到今天,我仍然每天都在学习新知识。 WWDC是我一生中最酷的一周之一,遇到了很多新人,他们都和我iOS开发一样感兴趣。 我开始感觉好些,但回到家后,我又回到了以前的“学校疾病”中。 在这一点上,我和父母决定放慢脚步。 我开始更多地待在家里,在那里我可以学习iOS开发并跟随我的热情。 然后,夏天来了,在暑假里,我盛开了,我再次感到高兴,得到了一份假期工作,赚了些钱,总之,一切都很好。 我以良好的希望开始了我的新学年(VWO 5),历时约2天。 两周之内,我在家比在学校多,一个月之内,我再也没有去学校了。 在这段时间里,我们与学校举行了多次关于“现在做什么”的会议,我再也不能去学校了,但是一直都呆在家里也不好。 长话短说,最后,我问是否可以作为iOS开发人员开始实习来扩展我的知识,而不仅仅是一直坐在家里。 学校对此还可以,我联系了该地区的几家公司。 其中之一就是wehkamp。 大约6个月后,即2017年12月,在几次会议之后,我正式开始在wehkamp担任iOS实习生,每周工作2天。 因为这是我想出的实习生,并且不是我的学业所必需的,所以我没有要完成的任务或要做的任务。 Wehkamp和我有完全的自由决定在那做什么。 由于其他方面的优先考虑而搁置了一段时间的项目是AR。 所以我们决定要做的是,我将开始使用AR来创建所谓的POC(概念证明)。 在wehkamp,我们拥有自己的生活产品系列,因此决定在AR中展示这些产品非常好。 确定了我们想要的东西之后,我就可以开始做/尝试事情了。 从简单地能够检测到表面开始,到从网络动态加载模型并重新映射纹理结束。 因此,让我们进一步深入。 开始时,我们必须弄清楚基本内容。 我有大约3天的ARKit使用经验,而这仅仅是超级基础。 我也几乎没有使用ARKits基础的SceneKit的经验。 因此,对于第一部分,我经常查看Apples文档和示例代码。 这样,我就能获得一个预加载的模型来旋转和移动,这在当时真是太神奇了! 转换次数 因此,对于我们的最终应用程序,我们需要的不仅仅是4个预加载模型,因此我们需要第三方参与为我们创建模型。 效果很好,但是我们遇到了一个问题。 这些文件以DAE文件(数字资产交换)的形式提供,这是一种流行的3d建模格式。 这里的问题是这些文件不适合移动设备,我们不得不将它们转换为SCN文件,SceneKit Node文件,这是Apple的格式,可与移动设备一起使用。 存储 我们的下一个障碍是模型的存储位置。 我们有了模型,现在我们需要将它们存储在某个地方,由于多种原因,将它们全部存储在设备上似乎不是一个好主意,最明显的一个就是存储空间。 因此,我们决定将它们在线存储,并且很好地解决了一个主要问题,我们将如何获取模型并将其显示在电话上? 为了解决这个问题,我们创建了一些功能,可以从服务器下载模型并进行渲染。 这花了一段时间才能弄清楚,但最终我们使它起作用。 然后,下一个问题出现了,或者实际上没有出现,这就是问题所在。 在将模型从DAE转换为SCN文件的过程中,所有纹理文件路径都被弄乱了,因此纹理将一直指向../现在指向我的Mac上的绝对位置。 在手机上渲染模型时,在该位置未找到任何内容,因为好吧,这不是我的Mac,因此该位置不存在。 我希望其他人也有这个问题,所以我可以将粘贴复制到解决方案中并完成。 但是事实并非如此……所以我们最终要做的是编写一个自定义的重映射函数,该函数将每个纹理文件从其怪异的URL映射到设备上的正确URL。 灯光 所以现在我们在房间里有了一个带纹理的3D模型,可以移动它,但是仍然有一些问题。 首先,一切看起来都像是一个充气的,反光的塑料模型。 简而言之,它们很丑! […]

在构建应用程序或软件项目之前,请设计一个错误处理系统(第一部分)

考虑应用中的错误处理系统可以成倍提高应用的可靠性和可维护性。 在您的应用中可能发生错误的无限可能中,您实际上只想看到有限的几种情况。 因此,当出现讨厌的错误或在您的应用中引入功能更改时,您会很高兴您拥有一个了不起的错误处理系统,它将准确告诉您哪里出了问题以及出了什么问题。 如果您有时间,以与Web API相似的方式为它们提供修复建议或提供其他提示也是一个好主意。 我将在为企业解决方案制作iOS应用程序的上下文中解释每个概念。 全文中包含特定的代码要点。 业务视角 在调试和拥有可靠软件的基础上。 企业通常希望收集有关可用性的数据并进行分析以改善其服务和产品。 因此,分析报告中的报告错误统计信息将是其产品如何为人们服务的有力指标。 用户角度 用户不希望应用程序崩溃或不响应。 用户想知道出了什么问题,以便对于大多数错误,他们可以尝试对自己进行故障排除,以便他们可以完成当前的任务。 开发人员观点 开发人员将节省构建和维护系统的时间和压力。 开发人员忘记了他们的代码,开发人员团队将处理彼此的代码; 因此,带有好名字,消息和提示的错误处理系统将使使用您代码的任何人都更加容易。 就像蛋糕一样,应用程序中的所有图层都赋予了它结构。 与蛋糕不同,应用程序中的图层只是抽象的。 模型层 这是业务逻辑所在的位置。 在您要解决的业务问题中,允许哪些关系以及什么才有意义。 因此,将在此处模拟诸如允许每个用户获得多少张优惠券的事情。 与业务相关的数据和模型在此处。 基础设施层 您的应用程序将连接到外部服务,例如第三方API和应用程序自己的后端。 以及本地数据库; 用于缓存和存储内容的服务被视为外部服务。 因此,您的网络和缓存类都在这一层。 诸如请求和响应模型之类的解析和补充模型也在此处。 用户界面层 该层将具有诸如ViewController,View和Cell类的内容。 这是锦上添花。 使它看起来不错。 自从制作了这张图。 我意识到那时就可以处理错误,并且在实践中大多数时候都更好。 模型层 您可能会收到诸如“不允许执行此操作”,“不符合要求的条件”之类的错误。 从编程的角度来看,这些可能是我们认为是业务逻辑的自定义规则。 如果有不同类型的用户和授权类型,将在此处确定。 对于开发人员和用户,这些错误通常可能是相同的。 基础设施层 在这里,您可能会遇到诸如“无法访问服务器”,“文件不存在”之类的错误。 从编程的角度来看,这些通常是从API或数据库传播的错误。 如果错误是技术笨拙的,则最好为开发人员和用户单独发送一条消息。 此外,向开发人员提供尽可能多的信息。 用户界面层 在这里,您可能会遇到诸如“无法调整窗口大小”,“视图未加载”之类的错误。 这些将只是UI错误,因此除非对用户而言至关重要。 无需将其显示给用户。 但是,对于开发人员而言,了解这些至关重要,以便它们可以从中恢复。 开发中 作为开发人员或项目经理。 您应该确保正确执行此部分,以避免在可能避免的事情上花费大量时间。 […]

使用第一天作为旅行日记的五种方法

如果还不清楚,我会将所有旅行计划和旅行记录保留在第一天。 没有纸或软件可以更完美地满足旅行者的需求。 尽管该应用程序的许多功能很可能是在考虑日常日记的基础上构建的,但它们无缝地过渡到了旅行者的工作流程中。 以下是使第一天成为旅行计划和记录的首选的五个功能。 1.思想,计划和梦想 这是显而易见的。 每次旅行都是从一丝灵感开始的,无论是照片,故事还是广告。 当您感受到灵感的那一刻,各种各样的图像就在您的脑海中流淌:在佛罗伦萨的阿尔诺河岸上wine饮葡萄酒,前往内陆探险,或漫步于中国的长城。 在第一天,很容易剪辑并保存灵感来源。 但是对我来说,它始于标签。 对于第一天的每次旅行,我都有一个专用标签。 去年夏天,我和妻子去欧洲旅行了三个星期。 我有一个专门的行程标签,该行程在我们的第一个规划阶段开始之前就已经开始了几个月,而且该标签的条目一直贯穿到我今天发布的一些照片上。 这些条目的前半部分主要用于计划:我们将在哪里,什么时候到达那里以及我们想做什么。 您可以在厨房的Mac上的餐桌上进行计划和研究,而当您处于忙碌状态时,可以在iPhone上快速调出和编辑行程。 它不仅是文本,还可以在“预览”中标记地图并将标记的地图放到第一天以供日后查看,这很容易。 我的“欧洲2016”标签的下半部分实际上记录了我们在旅途中的日常活动。 在任何旅途中,有时您都可以休息,放松并考虑所有经历。 对我来说,这是在火车上发生的。 在城市之间进行交通运输是抽出Mac,iPhone或iPad并记录每天活动的好时机。 总体而言,第一天旨在记录您的想法,计划,清单,行程等,随时随地。 这是一个自然的地方,可以存储您所有的旅行计划,然后再跳上飞机,乘坐火车时的想法以及旅行后度过美好时光的回家的乐趣。 2.图片 笑是开个好玩笑,摄影也是如此。 他们齐头并进。 然后自然而然地,Day One的照片功能就非常适合旅行领域。 您可以将多张照片添加到单个条目中,然后将其放置在文本之间,留下自己的个人独白,以备将来阅读。 或者,当然,可以仅通过从相机胶卷中添加预先拍摄的照片或通过开始新条目并启动相机来添加仅照片的帖子。 但是,与照片条目不同的是,您回家旅行后可以查看的图像拼贴。 在Mac上,单击“照片”选项卡将显示整个照片条目集合。 浏览照片就像滚动时间轴一样简单。 日期将覆盖在照片上,点击或单击该照片将带您进入该条目。 非常简单。 iPhone GPS的一个令人敬畏的副作用是,每张照片在拍摄时都可以进行地理标记。 因此,在忙碌的一天结束时,您可以滚动查看相机胶卷,找到所需的照片,然后将其发送到第一天,第一天将自动获取照片的位置并将其添加到日记帐分录中。 这可能是整个应用程序中我最喜欢的功能。 随着时间的流逝,我的第一天慢慢发展成为一本大型的照片日记,上面有日期戳,位置,天气,活动,甚至还有我的步数(所有这些都在后面)。 3.位置跟踪 正如我刚才提到的,第一天在记录您去过的地方和何时去过方面做得很棒。 从世界任何地方在iPhone上添加条目都是快速简便的,并且第一天可以快速获取您的位置并将其添加到条目地图中。 在线提供付费服务,可让您查明您在世界各地访问过的所有不同地点。 您可以在第一天免费进行此操作。

上App Store!

我们位于App Store中! 查看我们,立即下载,并开始探索众包排名的世界! 描述 Trendendo是一个平台,可让您对重要的事情进行投票,跟踪社区的观点并与列表互动以进行您可以想象的任何事情。 简单来说,就是生命。 排名。 投票。 –无论是最佳NBA球员,最喜欢的跑鞋品牌,最重要的选举问题还是最伟大的吉他手,都可以对重要的问题和跨越一生的辩论进行投票 –借助互动体验,只需轻按几下即可为卡注册您的选票 探索。 –作为众包排名的中心,请在您的供稿中浏览感兴趣的卡片,并查看您的社区对广泛主题的看法 –从企业到消费者,技术到生活方式,体育到娱乐等13个类别,Trendendo都可以提供几乎所有内容的视角 跟踪。 –打开任何卡片的“排名”标签,并探索您的收藏夹位置随时间的变化 –通过反映实时趋势脉动的提要,您始终可以连接到相关内容 –一个平台,它比冗长的评论,有思想的评论者和无休止的通知更注重效率和答案 连接。 –导入您的Facebook朋友以建立您的社交圈 –搜索感兴趣的人,以查看他们对哪些卡和类别进行投票 在一个渴望速度和引人入胜的内容的世界中,Trendendo消除了混乱,为您提供了相关,有用和有趣的体验。 立即下载以留下您的印记,并开始探索众包观点。 iPhone屏幕快照 投票愉快! 我们期待您的反馈!

使用泛型和描述符在iOS上标准化图标,图像和占位符

创建良好的用户体验时,一致性是关键。 在显示图标,产品照片,占位符或加载微调框时,只需一个位置来定义它们的外观以及应如何在屏幕上显示这些内容,就可以使我们保持一致。 在iOS的世界中,我们使用UIImageView ,它允许我们显示图像并配置诸如contentMode , tintColor , backgroundColor类的东西,让我们不要忘记那些非常重要的UI测试的accessibilityIdentifier 。 我们正在努力做到两件事: 一个可以定义我们如何在应用程序中显示标准图标和图像的地方,包括应应用于每个图标和图像的图像视图设置。 一个干净的呼叫站点,可以应用这些图像,而不必担心如何以及何时加载和显示这些图像。 以下是一些我们要标准化的常见图像类型的示例: 加载微调器 :本地图像,无缩放比例的集中化图像,浅灰色背景,“ loadingImage”可访问性标识符。 下载的产品图片 :从URL下载,缩放以填充“ productImage”可访问性标识符。 占位符图像 :本地图像,没有缩放比例的集中化图像,灰色色调,浅灰色背景,“ placeholderImage”可访问性标识符。 下载失败图标 :本地图像,没有缩放比例的集中化图像,红色色调,浅红色背景,“ failureImage”可访问性标识符。 功能图标 :本地图像,无缩放比例集中显示,深灰色色调,浅灰色背景,“ featureX”可访问性标识符。 一些图像/网络库允许您在加载远程图像时提供占位符,但是我们需要比通常提供的更多控制权,以允许我们准确指定它们的显示方式。 当显示特定屏幕的图像时,我们不想担心图像的下载方式和时间。 我们只想对图像视图说:“显示此图标”,或“使用我们的标准占位符加载此图像”。 我们希望我们的呼叫站点尽可能简单。

当我说代表时,您说什么?

如果您使用过TableView或CollectionView ,那么您一定听说过“ 委托 ”一词,或者可能已经实现了它。 但是,代表究竟做什么呢? 你能自己做一个吗? 本文试图过分简化委托人的解释,以便您可以理解并自己编写。 让我们从基于Apple文档的报价开始: 委托是一种简单而强大的模式,其中程序中的一个对象代表另一个对象或与另一个对象协同工作。 委托对象保留对另一个对象(委托人)的引用,并在适当的时候向其发送消息。 我们可以参考的最简单的现实生活委派关系是老板和雇员之间的关系,其中一个代表他人。 让我们用代码描述关系。 让我们创建一个虚构的类Boss ,它具有doSpeech()函数, 该类在被调用时使老板为员工做励志演讲。 然后再假设一个虚构的类Employee ,它具有doApplause()函数, 您猜对了,它使员工给予它可以给予的最热情的掌声。 现在,虚构的时刻到了老板去做doSpeech()的时候了 。 老板为此花了整夜的时间做准备,希望他的员工听完他的话后能更有动力。 片刻之后 ,员工们听到了完美的演讲 。 但是有些事情感觉不对劲, 没有人正确地掌声 。 有些人在演讲过程中鼓掌,有些甚至在演讲开始之前就鼓掌,其他人甚至不知道何时应该鼓掌。 老板在拐角处哭泣,知道他的员工没有能力给他“正确”的掌声。 老板不告诉员工什么时候鼓掌 谁该怪? 员工呢 当然不是! 让我们像往常一样责怪系统! 只是开个玩笑 〜老板要怪,因为他从不告诉员工正确的doApplause()时间。 当然,只要老板要求他们掌声,告诉员工doApplause()即可解决此问题。 老板告诉员工何时是应该鼓掌的时候 经过适当的培训后,老板现在很高兴员工知道何时鼓掌。 是的! 任务完成! 但是,尽管我们根本没有提到协议 ,但是对这样的标题颇为讽刺,不是吗? 现在让我们谈谈。 让我们给老板另一个问题,如果老板在员工热烈掌声之后想要doFollowUpSpeech()怎么办? 老板不知道掌声何时结束,他永远也不想错过正确的时机来跟进演讲! 也许员工应该广播通知,将其放在NSNotificationCenter上,然后让老板听,以便他知道进行后续演讲的正确时间。 但是知道老板是一个非常感性的人,他不希望其他人知道掌声的确切计时,他不希望其他人冒出来,接管舞台,并提供更好的跟进讲话。 真麻烦! 老板几乎不知道,员工有一个秘密协议,只有获得信任的人,可以代表他们的人,可以委派他们的人才能知道! (我知道这有点强迫) 员工对获得信任的人有一个秘密协议 更好的是, 无论谁实现此协议 ,例如: […]

Apps vs Swift 3

介绍 Swift是一种新的Apple多功能编程语言,于2年前首次亮相。 自从Apple社区不断提供支持以来,自首次发布以来就一直在不断更新。 自Swift首次发布以来,已经有3个主要版本,第三个是今年9月。 那么这是什么意思? 对于使用该语言的开发人员而言,该发行版的改进带有其优缺点的合理份额。 为了获得一个想法,Swift可以与Objective-C系列进行顺畅的交互并使用C标准库提供的某些功能。 随着Swift 3的发布,与这些外部语言的许多用法和连接都得到了迅速重建。 要查看所有官方新功能,请在此处访问Swift网站。 例如,对于那些使用Swift的异步框架在其他线程中执行任务的用户来说,这种处理方式是这样的: 并且由于它具有如此多的全局函数和全局变量,因此Apple对其进行了如下重写: 如您所见,他们正在实施更快速的方法。 同样的变化也适用于其他各种情况。 例如,从旧的Objective-C NS类迁移到新的Swift类。 ( NSTimer->计时器 )。 注意:最后一个示例不是名称的重构,而是类解决方案的整个重构。 Swift 3的许多改进还带来了不便(或我们可能不习惯的过程)。 现在,必须迁移正在使用的应用程序,以支持新版本的OS和IDE XCode。 此外,与以前的版本相比,此新版本的Swift具有不可计数的重大更改。 因此,必须移植可用代码的各个部分,并找到一些解决方法,以解决不再存在的部分。 这也意味着您正在使用的库也必须建立端口,因此不再维护的库可能会被弃用。 听起来可能有些不知所措,但是,Swift添加了一个内置插件来自动移植代码。 是的,它有缺点,因此请记住,对于那些使用许多框架和复杂代码的应用程序,插件可能还不够。 这使我想到了这篇文章的想法… 要了解如何移植具有许多框架和复杂结构的应用程序,您将获得移植自己的应用程序所需的工具和资源! 应用程序 我们正在迁移的应用程序以iOS 10或更高版本为目标,并使用迦太基来管理项目的依赖项。 当前,我们正在使用Fastlane处理部署,测试,证书和供应配置文件,使用Parse存储数据,使用AWS包含具有Lambda功能的Parse服务器。 这样,某些应用程序后端逻辑就处于无服务器架构中。 该应用程序还使用由Objective-C制成的具有较低层的桥接器,以通过蓝牙与基于外部硬件的模块进行连接。 以及使用S3存储各种文件。 有用的资源:https://martinfowler.com/articles/serverless.html 准备 估算工作量 为了估算工作量,我们建议使用功能点技术。 此技术可用于根据任务的历史工作量,大小和不确定性来客观地衡量任务。 不幸的是,使用这种方法,我们发现无法拆分迁移以更好地衡量所涉及的任务。 这是由于以下事实:一旦您开始迁移代码,该应用将无法编译或正常运行,直到完成为止。 相信我,这个过程可能需要几个小时甚至几周的时间。 依存关系 移植之前,必须检查依赖项的发布。 在最好的情况下,所有依赖项都将完成移植,但是现实是,许多依赖项可能尚未移植其项目。 因此,在这种情况下,您有两种选择:估算删除依赖项的成本,并针对迁移依赖项的成本实施临时解决方案。 不可避免地,您必须在这两个选项之间做出决定。 可能发生的最糟糕的情况是,不维护依赖项,并且无法从维护者那里接收任何端口。 在这种情况下,您可以从库中进行预搜索,也可以建立端口并向项目提交“拉取请求”。 在开始迁移之前,必须先检查依赖项的状态。 IDE和设备 […]