GCD在UICollectionView上的强大功能滚动

所以我从最近2年开始使用objC,从最近4个月开始使用Swift 3。 因为这是我的第一个博客,所以这个问题对我来说很难解决。 在尝试了多个stackOverFlow线程之后,在搜索了数百篇博客之后,我终于找到了解决方案。 就是这样 问题: 考虑一个具有UICollectionView作为情节提要的IBOutlet的视图控制器。 它将解析后的JSON响应对象用作数据源数组。 因此JSON结构非常庞大,就像我们的数据源一样。 看一下下面的UI截图: 所以UICollectionView具有问题和答案的结构,因为标题显示了问题,而单元格是可用于相应答案的多个答案。 单元格包含一个UIImageView和UILabel作为描述。 用户必须至少选择一个单元格作为一个问题的答案,否则,UICollectionView将滚动到特定的索引单元格。 为了存储选定的答案,我为选定的索引维护了[[IndexPath]]。 这样我就可以知道用户选择了哪个值,并将此数组用于cellForItem以显示所选答案。 滚动到特定索引单元格的代码: 现在,最关键的部分是我花了很多天来弄清楚的。 在单击下一个按钮时,UICollectionView应该可以平滑滚动到相应的索引单元,但是在滚动时会被切碎。 我不得不点按两次按钮三下才能到达该特定的索引单元格。 调试: 所以,首先我可能是因为分层。 因为我是CALayer 与所选单元格接壤以突出显示特定单元格。 但是即使去除分层后,问题仍然存在。 其次,我认为这一定是有可能发生的,因为我没有正确地缓存图像 ,所以一定是因为这个原因,但是即使在调试代码后,我仍然知道这不是问题,这是不同的。 花了很多时间后,我有了使用XCode的工具来了解问题的想法。 因此,使用仪器后,我开始获得清晰的图像。 当我单击按钮进行验证时,我的应用程序没有足够的内存。 即我的整个主线程因执行该特定任务而被阻塞。 当我在主线程上进行分层,图像下载以及UICollectionView的滚动时,主线程被100%的workLoad使用。 解: 因此,为了解决这个问题,我创建了一个VC中的另一个线程,在我的viewDidLoad 中将 QoS指定为.userInteractive 。 因此,上面的代码所做的只是创建另一个线程并从主线程共享工作负载,以便更好地响应主线程。 现在,主线程只有两个任务可以执行:渲染边框和显示图像。 当我们使用此scrollDispatchQueue滚动到相应的索引时,单击下一步按钮时,现在不会出现UICollectionView滚动的斩波。 在解决这个问题的过程中,我非常想解决这个问题,但是现在终于解决了,并且知道我们可以使用GCD在多线程中发挥什么作用。 所以希望这个博客能在以后迅速帮助像我这样的新手3 3 因为这是我的第一个博客,请忽略是否有错字。 欢迎对此发表评论或提供任何帮助,或针对相应问题提出其他建议。 真的很高兴知道。 感谢您的阅读,祝您编程愉快。

LyriCode现在可以购买了

测试版即将来临 在过去的四个月中,我们一直在研究Lyricode,最终达到了让我们满意地展示应用程序状态的地步。 这就是为什么现在可以在Apple App Store上以0.99美元的价格购买LyriCode的原因。 LyriCode是一种自动文本编辑器,旨在通过多种方式帮助世界各地的艺术家。 我们的目标是让艺术家使用LyriCode,以便他们可以专注于艺术的实质,而不必担心结构。 它会自动识别输入到系统中的所有文本中的所有标题,文章,重复单词和押韵。 这使艺术家能够注意到自己作品中遗漏的事物,并看到视觉反馈以了解他们的工作。 该应用程序还具有许多其他可自定义的选项,使用户可以根据自己的需要量身定制体验。 这只是我们希望看到LyriCode成为开始的开始。 LyriCode目前处于测试阶段,因此尽管它能够按我们预期的方式运行,但我们仍对该应用程序有更大的计划,这仅仅是个开始。 毕竟,为什么不庆祝最初的发布,我们不会在本文中涉及任何细节,但是我们将在不久的将来发布有关LyriCode扩展计划的信息。 非常感谢您提供任何反馈意见,请随时发送任何方式。 那些寻求与我们联系或在Greedy Bear Studios了解更多关于我们团队的方法的人应该仔细阅读我们的网站。 我们期待着大家的来信,并继续我们在LyriCode上的工作。

5个iOS ARKit应用将向您展示增强现实的力量

苹果通过将其作为iOS 11的主要更新在AR应用程序上下了赌注,似乎押注了苹果的青睐。 如果您仍然不了解AR,那么这项技术可以在手机摄像头的帮助下将虚拟对象放到现实世界中。 在iOS11发布之后,苹果用户已经开始疯狂,社交媒体正以AR特色图片和视频激增。 相关文章: ARKit和ARCore:所有您需要知道的AR将如何影响移动应用程序世界 在WWDC 2017中,公司向iOS应用程序开发人员展示了其ARKit,用于构建AR应用程序。 在周二发布iOS 11之后,该公司添加了许多AR应用程序,并从那时起不断更新App Store。 我们为您带来商店中可用的一些最佳AR应用程序,这些应用程序将带您进入AR世界。 1. 天空指南 该应用程序最大程度地利用了增强现实,并通过您经历过的电话为您提供了最舒缓的视野。 该应用程序可让您通过将手机的摄像头对准天空来发现天体及其当前位置。 在晚上dog狗或在山上露营时使用该应用程序。 该应用程序可以使用或不使用wifi和蜂窝数据。 2. 健身AR 如果您担心自己的跑步或骑行路线,并希望对其进行优化,那么Fitness AR非常适合您。 该应用程序可让您借助AR将3D地形图放置在桌子,地板或床上来探索锻炼路径。 选择路线并调出AR相机后,您可以将所选地图放置在现实世界中。 您可以旋转,放大和缩小它们以构成锻炼。 相关: Snapchat添加了新的增强现实功能,将您的Bitmoji角色带入现实生活 3. 宜家广场 该应用程序可让您将宜家的产品虚拟放置在您自己的位置,并精确显示家具的尺寸。 宜家的应用程序包含沙发,扶手椅,脚凳,茶几等的3D和真实比例模型。 通过摄像头扫描地板,从宜家产品列表中选择所需的物体,然后将摄像头对准地板空间,最后将产品拖到要放在地板上的位置。 4. GIPHY世界 流行的GIF提供公司已经可以在iMessage,Facebook Messenger等应用程序中发送GIF。 该公司通过将AR本质添加到其GIF中进一步迈出了一步。 GIPHY World允许您将自己喜欢的动画GIF放到周围,并制作视频以通过该应用与朋友分享。 5. 胡萝卜天气 Carrot Weather是一款功能强大的疯狂天气应用程序。 随着iOS 11的发布,公司通过ARKit将天气机器人添加到其应用中。 该机器人在向您提供天气详细信息的同时,会不断发出一阵小蛇。 相关: Google向Android用户赠送的最新礼物:ARCore增强了现实 一个小提示,只是不要戳机器人的Oculus传感器! 有关最新的技术新闻和评论,请在Twitter,Facebook,LinkedIN,Instagram和Flipboard上关注MobileAppDaily 本文是否有帮助?

我对Medium的iOS应用不满意的地方

该应用程序似乎主要像一个Web包装器。 一些链接可以进入Web视图。 例如,您的个人资料页面中的“统计信息”链接。 如果您查看一个故事,它会提供一个指向“在应用程序中打开”的链接……该链接不起作用,因为我已经在应用程序中。 它也无法改变现有的故事,这是我不时做的,因为我犯了愚蠢的错误。 这似乎是真正的基本功能,例如早期迭代(现在已具有)中缺少的“草稿”。 我并没有真正使用Medium应用程序阅读故事。 也许有人这样做,但他们都是Web链接,为什么不将它们呈现为网页呢? 实际上,如果您实际上并不打算使用某个应用程序的某些优势,那么为什么还要拥有一个应用程序呢?

您应该了解的iOS隐私和数据安全提示

正如统计数据所说:在您阅读本文时,全球有超过46.1亿手机用户,到2019年底,可能性超过60亿 ,其中大多数是iOS用户。 iOS智能手机已成为我们日常工作中不可或缺的一部分-这就是为什么要领先于瞬息万变的世界至关重要。 看看下面的统计表; 超过77%的澳大利亚人和72%的美国人定期使用手机。 总体上68%的用户几乎所有时间都在使用智能手机,而18%的美国用户通过移动电话进行付款和生成发票。 据 Google AdWords产品管理副总裁“ Jerry Dischler”说 “在移动设备上进行的Google搜索比在美国和日本等10个国家/地区的计算机上进行的搜索要多”。 (来源:adwords.googleblog.com) 现在,根据上述统计数据,至关重要的是维护智能手机中数据的隐私和安全性。 只有通过正确的设置步骤,才能在移动设备上实现数据隐私。 大多数iOS移动用户都信任此平台与他们的重要数据进行交易,例如电子邮件通信,图片和重要文档。 苹果提供了一些快捷选项,可以在具有高安全性的iOS设备上运行应用程序,并且用户必须了解这些详细信息,这很重要,因为忽略这些细节可能会影响丢失宝贵数据,从而失去对设备的保护。 在本文中,我将向您介绍iOS设备上的一些隐私和数据安全提示。 开始了… 1.谨慎处理并使用常识 没有这样的应用程序可以保护您的电话数据不受您的侵害-是的,这是事实。 链接插孔有助于访问陌生人手中的机密数据。 超过90%的智能手机用户都面临此类问题。 因此,在访问任何应用程序或链接之前,您必须三思而后行– 您正在访问什么! 什么是访问数据的媒介! 谁在发送数据和数据位置(是的,这很重要)! 请避免点击可能会带您到链接/网站的弹出链接,从而损害您的数据隐私。 2.避免使用HTTP并选择HTTPS进行交易 超文本传输​​协议(HTTP)是Internet的语言,是在万维网上使用的通信方式。 HTTPS (类似于https://www.example.com之类的东西)是安全的通信方式,它对两端之间的数据进行加密并有助于建立安全的交易-因此没有中间攻击的机会。 因此,您只需要与启用HTTPS的网站进行交易,以保护您的私人数据。 3.启用设备安全性 使用iOS中的内置设置应用程序,触摸ID和密码可以更改较长的数字,字母数字或自定义密码。 启用生物特征指纹读取器后,iOS会将数据和凭据保存在安全的存储区中,直到获得正确的指纹为止。 要访问基于Web的帐户和服务,您必须对额外的证券层进行身份验证,以提供更好的安全性并防止未经授权访问您的设备。 阅读更多

iOS 9升级:为什么我的单元测试停顿了?

关于为什么从iOS 8升级到9 SDK导致测试缓慢的调查。 由 艾伦•芬伯格 ( Alan Fineberg)撰写 。 抬起头,我们已经搬家了! 如果您想继续了解Square的最新技术内容,请访问我们的新家https://developer.squareup.com/blog 将Square Register从iOS 8升级到iOS 9时,我们发现单元测试行为发生了难以诊断的变化。 我们调查了此问题,并追溯了我们的步骤以找到根本原因。 最终,我们发现潜在的问题不仅是Square特有的,而且可能会影响任何iOS开发人员。 现在测试缓慢,不可靠 iOS版Square Register已有将近7年的历史,它是一个庞大的应用程序,其中包含超过一百万行代码。 从iOS 8或iOS 9迁移基本SDK似乎很简单,但这种变化的规模却带来了许多挑战。 这些挑战中最主要的是应用程序的测试套件。 实施更改后不久,我们注意到我们的单元测试套件(每个构建都运行了数千个测试)已经大大减慢了速度,最终将失败。 这些测试失败在单独运行时从未发生,但通常在较大的测试套件中失败,并且并非总是以相同的方式失败。 由于没有一个单一的测试有缺陷,所以一个合理的解释表明共享测试环境受到污染。 这是主队列! 下一步是减少草垛的大小。 我们开始注释测试以缩小范围。 在文件变得乏味之后逐一注释掉-我们提供了使生活更轻松的类别技巧(下)。 不幸的是,不存在一种更好的方式来运行与iOS中的命名模式匹配的测试子集: 令人沮丧的是,此Xcode功能仅启动了Instruments的惰性实例,而不是附加到进程。 相反,要描述测试运行,我们必须: 在代码中设置一个断点, 运行测试, 发射仪器, 通过进程ID小心地附加到正确的进程(下拉列表中可能有重复项) 然后点击“记录”。 泄漏工具不认为NSManagedObjectContext(下面的屏幕快照中为SDManagedObjectContext)是泄漏,因为它最终被拆除了。 但是它确实报告了保留/释放对的列表。 因此,我们查看了单个对象超过6000个保留/发布的列表。 当时,我们没有发现问题的根源,因此它又回到了通过lldb进行调试的过程。 经过大量调试并打印出[context keepCount]后,我们发现上下文的save:方法添加了一个保留,并且,如果我们注释掉了这一行,则按预期方式清理了上下文(!),并且泄漏为堵塞。 我回到了Instruments,用此新信息对它的报告进行了交叉检查,并且肯定的是: 罗,未配对的保留。 导致泄漏的保持架的详细视图: Instruments的详细信息视图:堆栈跟踪包括save:,CFRetain和_registerAyncReferenceCallback(sic) 诊断 为了调试,我覆盖了[NSManagedObjectContext(_NSCoreDataSPI)performWithOptions:andBlock]并设置了一个符号断点(基于上面的Instruments输出)。 我的汇编语言不太流利,但是我可以通过阅读以下注释进行跟进: 在第91行,我们增加了保留人数。 在第132行,我们将异步工作添加到队列中。 我们推断出,在调用save:时,上下文正在排队一些工作并同时保留其自身(逐步执行并调用p(int)[$ […]

Charles Proxy-主管代理工具

作为软件开发人员,对不同数据集的代码进行单元测试非常重要。 我需要在运行时更改模型对象或更新服务器。 如果我做错了事,这两种方法都可能造成麻烦。 一旦从设备传递了请求,我们通常就没有太多的控制权,而每次在代码中使用不同的值对其进行更改都不是一件容易的事。 Charles Proxy,为我节省了时间,并帮助您处理许多请求和响应 。 术语“互联网”的兄弟姐妹 深入了解Charles代理有助于修改充当互联网兄弟姐妹的术语。 以下是关于此的小注释。 该注释将帮助您解决互联网上最常见的问题:“互联网如何工作?” 。 连接到互联网的所有内容都将具有IP地址 。 IP地址不是人类可读的格式,因此引入了域名 。 在DNS服务器中找到与该域名对应的IP地址,该服务器分为(1)递归解析器,(2)根名称服务器,(3)TLD(顶级域名)名称服务器和(4)权威名称服务器。 记住顺序,因为这是完成搜索相应IP地址的方式 。 路由器中的NDL (网络转换设备)将专用IP地址转换为公用IP地址 。 互联网中的信息以数据包的形式传递。 当数据包向目的地移动时,成千上万的路由器充当中间设备,并将自己的IP地址添加到数据包中。 一旦到达服务器并向后导航,路由器便会将其IP地址从数据包中解包。 什么是代理? 代理人,代表他人的权力。 代理服务器或软件充当端点设备和Internet之间的中介。 请求和响应通过代理传递,因此我们可以查看或记录设备的流量。 代理服务器还有助于缓存数据,阻止恶意流量。 这是阻止我们进入YouTube和Facebook的罪魁祸首。 由于它能够缓存数据,因此可以避免再次访问服务器。 安装 您可以从以下链接下载LINUX , Mac OS和Windows的代理: 下载Charles * Charles Web调试代理的免费试用版 Charles Web调试代理–官方网站 www.charlesproxy.com 查尔斯 代理软件在我们的系统中通过简单的UI和命令行工具运行。 查尔斯代理包含两种视图结构和顺序。 结构有助于分隔不同的主机URL,顺序有助于我们根据时间,持续时间,大小等确定每个呼叫的顺序。 Charles代理的有用功能: 如果要观看Charles代理的每个功能如何工作,可以直接单击此链接。 了解Charles代理的功能有什么好处? 一旦您了解了Charles,使用诸如Fiddler之类的其他代理软件就不会很复杂。 它节省了我的时间并帮助提高了生产率,我希望它能为您做同样的事情。 观察HTTP流量 一旦您在同一网络中连接了Charles代理和设备并在设备中更改了代理地址,Charles将显示通过它的每个请求和响应。 […]

如何下载和安装用于移动设备的Xfinity Home App

Xfinity以优惠的价格向客户提供Internet,语音,有线电视和家庭安全服务。 您可以轻松使用Comcast Xfinity的这些出色服务。 但是有时,这些高级Xfinity产品和服务也会遇到随时困扰您的问题。 这就是为什么我们在这里。 在下面的文章中,我们提到了有关如何下载和安装Xfinity家庭应用程序的一些方法和说明。 这将帮助您访问移动设备的所有安全功能。 阅读更多: 如何检查comcast电子邮件 Comcast Xfinity提供为用户提供便利的最佳服务。 Comcast商业客户服务处理有关Comcast Xfinity商业服务的服务质量和性能的所有查询和建议。 Xfinity客户服务中心也可为用户提供实时帮助。 下面提供了使用Home应用程序的独家指南,您可以按照说明享受无中断服务。 Xfinity的家庭应用程序可用于以下设备: iPhone,iPod,iPad touch。 平板电脑或Android手机。 iPhone,iPod,iPad设备入门- 通过搜索Xfinity Home App从您的Apple设备上的App Store下载该应用程序。 下载并安装。 点击确定。 (系统会提示您允许该应用添加联系人,发送消息,拨打电话,识别设备上的文字) 点击应用程序,然后在安装后输入您的用户名和密码。 所需设备: Xfinity的家庭订阅。 Xfinity密码和用户名(使用您的Comcast客户登录 ID和密码访问您的帐户) iOS 10 适用于iOS 10的设备: iPad Mini 2或更高 iPad 4或更高 第六代或更高版本的iPod touch 设置为24/7录制 阅读更多:文本代码使用Xfinity警报获取帐户更新 平板电脑或Android移动设备入门 转到Android设备上的Google Play商店,然后查找Xfinity Home应用。 或者,您可以通过单击此处下载应用程序。 在您的设备上下载并安装该应用。 点击“允许”(这将使Xfinity Home可以拨打电话,阅读和添加联系人,在闹钟关闭时发送消息以及从Home应用程序中识别重要的文本和消息。) 安装应用程序后,点击“应用程序图标”,然后使用Xfinity密码和用户名登录到您的帐户。 所需设备: […]

学习Swift和iOS开发第12部分:多态

在本文中,您将通过阅读有关多态的方法结束对面向对象编程的基础研究。 除了成为一个很酷的词外,多态性是成为程序员时要理解的一个非常重要的概念。 在开发人员求职面试中通常会被问到:“您能定义’多态性’吗?”我们将打破多态性的含义,含义以及它的实际方式,而不是像鹿一样大开眼界。在代码中播放。 什么是多态? 长期以来对多态性的编程定义是:“多态性允许表达某种合同,可能有许多类型以不同的方式实现该合同,每种类型均根据自己的目的。” 这可能只是教科书的定义,但是这里的基本概念是我们的代码可以以许多不同的形式出现,并且其功能可以以不同的方式实现。 这可能仍然令人困惑,没关系。 让我们构建一个代码示例,因为这样更容易理解多态。 创建一个新项目 首先,如果尚未打开Xcode,请点击Create New Playground 。 为其命名,如Polymorphism ,然后单击Next 。 选择某个位置以保存此.playground文件,然后单击“ Create以保存它。 您应该会看到类似下面的屏幕。 删除左侧的所有样板代码,但根据需要保留import UIKit 。 Creating a base Class with default functions 首先,我们将创建一个名为Shape的类,该类具有area属性和一个用于计算形状面积的函数。 将以下内容添加到您的游乐场: 类Shape { var区域:Double? func computeArea(valueA:Double,valueTwo:Double){ } } 我们的基类Shape包含了我们需要的一切-一个用于存储面积的变量和一个用于计算具有两个输入值的面积的函数。 让我们创建一个子类以继承Shape类。 为了证明多态性,我们需要做的是遵守Shape设置的“合约”,该合约具有一个calculateArea函数。 创建一个三角形子类 添加以下类,并覆盖Playground底部的函数calculateArea(valueA:valueB:) : 类Shape { var区域:Double? func computeArea(valueA:Double,valueB:Double){ } } 三角形:形状{ 覆写func computeArea(valueA:Double,valueB:Double){ 面积=(值A […]

越狱iOS 11快速指南—带有Electra的iOS 11.1.2

Electra越狱已经结束。 由于Cydia安装程序支持iOS 11软件版本,因此大多数iDevice用户已跳入Electra iOS 11越狱之旅。 这个处于测试阶段的越狱工具包存在很多问题。 但是,经过艰苦的工作和更多的研究人员,CoolStar可以针对iOS 11.1.2-11.0发布稳定的越狱。 似乎Saurik对此事件不满意,他已指出不要在您的iDevice上安装Electra越狱。 由于CoolStar使用了Substrate的替代方法,Saurik提到它不会采用Cydia下载的真实经验。 但是,我已经测试过Cydia iOS 11,并且看起来运行良好。 现在,由您决定是否选择iOS 11越狱。 无论如何,这是有关如何使用Electra越狱的快速指南。 如何使用iOS 11的Electra越狱-iOS 11.1.2 从此处下载Electra的最新版本。 从官方网站下载Cydia Impactor的最新更新。 打开Cydia Impactor,然后将iDevice连接到计算机。 Impactor将识别您的设备,然后将下载的Electra的IPA文件拖放到Impactor界面。 出现提示时输入有效的Apple ID和密码。 在设备上安装越狱应用程序后,导航至设置>常规>设备管理 。 选择相应的开发者资料并信任该应用。 从主屏幕打开Electra,然后点击“越狱”按钮。 然后,该应用将开始越狱并安装Cydia iOS 11。 该过程完成后,设备将重新弹出。 恭喜你! 您已经将Electra越狱的 iPhone,iPad或iPod touch设备越狱了 。 由于Cydia下载当前正在运行,因此您有权在iDevice上安装调整,主题,应用,游戏和更多内容。 注意 :通常,我不建议用户遵循越狱规则,因为这种机制可能存在一些问题。 因此,您有责任越狱iPhone,iPad,iPod touch。