Tag: macos

更新iOS 12.2越狱下载PanGu_12.2.0工作

越狱者的大机会今天晚些时候,苹果将在这里发布其第四款iOS 12.2开发者版本。自从发行版开始,围绕着iOS 12.2盘古越狱的担忧就一直在盘旋。 发布第三个测试版后仅3天。 发行说明仅提及错误修复,但是如果在新的iOS 12.2.1 beta上可以找到有趣的内容,我们将进行更新。 您可能会问Pangu是否是越狱和安装Cydia的安全方法,还是应该避免使用该软件。 谈论快速脱胎换骨! iOS 12.2可能只是刚刚发布,但是Pangu iOS 12.2越狱 (它为基于iOS 12.2的Apple设备提供了不受限制的解决方案)已经与最新版本的Apple移动操作系统兼容。 PanGu iOS 12.2 Mac版越狱 适用于Windows的PanGu iOS 12.2越狱 使用Windows计算机指南,越狱iOS 12.3 Beta到iOS 12.2的好处是什么? 此页面是越狱iOS 12.3的最终介绍。 我们建议仅使用信誉良好的资源,例如在Cydia Install中预加载的资源,并远离任何盗版资源库。 除了有关所有越狱相关的常见问题解答,您还将找到有关如何使用Windows越狱iOS 12.3到iOS 12.2的详细教程的链接。 下载| 使用Mac Computer Guide安装免费越狱iOS 12.3 Beta至iOS 12.2 iPhone和iPad 越狱iOS 12.3是一个冒险的过程,我们不容保留,但它仍然很受那些希望通过Cydia市场在其智能手机或平板电脑上安装非官方应用程序和进行调整的人的欢迎。 如果您曾经被Apple操作系统中的美学或功能障碍所困扰,那么Cydia Install上可能会提供一个软件包来按您想要的方式进行安装。 这是我们对最新的iOS 12.2.1越狱以及如何使用Mac越狱iOS 12.3到iOS 12.2的全部了解。 尽管Pangu确实像广告中所说的那样工作,并且不包含恶意软件,但是它的开发方式引起了人们的注意。 有人声称不必要地烧毁和/或盗窃了有价值的iOS漏洞,这可能意味着未来的iOS 12.2越狱将比预期的时间长得多。 请放心,越狱的开发人员MuscleNerd和iH8sn0w都签出了Pangu iOS 12.2,并发表评论说没有理由担心。 […]

如何在macOS中制作标签

开发应用程序时常见的UI元素是标签。 在iOS和tvOS中,此元素称为UILabel 。 可能令您感到奇怪的一件事是macOS没有这样的对手。 相反,我们需要使用文本字段,更具体地说是NSTextField 。 为了保持传统,我们将两个平台的标签实现简单地比较两个世界。 这里没有什么特别的,我们创建标签,给它一个框架,分配一些虚拟文本,将白色设置为背景色,然后告诉标签调整大小以适合内容。 在生产应用中,通常不调用sizeToFit,除非在手动计算元素大小时需要标签的确切帧大小。 我通常会坚持大多数UI实现的约束。 关于iOS / tvOS的知识已经足够多了,让我们开始讨论一下如何在macOS上完成此工作。 我们首先创建一个NSTextField并设置一个框架。 接下来的事情是将文本添加到我们的标签中, NSTextField不提供类似于UILabel的文本属性。 相反,我们需要将stringValue设置为文本字段; 这与NSTextField的继承有关。 它继承自NSControl , NSControl具有与值相关的一堆属性,例如doubleValue , floatValue , intValue等。在处理从NSControl继承的其他类时,要牢记这一点。 如果要从NSTextField中提取文本值,则可以使用相同的属性来实现。 接下来是设置背景色,如果您还记得有关将背景色应用于NSView的文章 ,您会注意到这与该实现有所不同。 NSTextField具有采用NSColor的backgroundColor属性。 分层方法不适用于NSTextField 。 告诉标签为sizeToFit足以使标签显示在屏幕上,但这不会给我们想要的输出。 您会注意到我们在文本字段周围有一个边框,要摆脱它,我们只需将isBezeled属性设置为false和voila 。 现在看起来像是预期的,但是我们需要做的最后一件事是使它充当标签而不是文本字段,并且将isEditable设置为false。 就是这样,我们已经在macOS上创建了与UILabel等效的东西。

迦太基的依赖性管理策略

在与iOS和macOS开发人员进行讨论时,我意识到他们几乎所有人都知道迦太基,但是不幸的是,一些开发人员认为它仅限于carthage update命令来下载框架。 如果您只知道update作为选项,或者仅倾向于使用此选项,那么您将在本文中找到一种简单而有效的依赖项管理策略,该策略仅基于两个Carthage选项update和bootstrap 。 迦太基使用基础 迦太基工作流程基于Cartfile ,后者是开发人员和工具之间的接口。 我们在该文件中以OGDL格式添加了我们想要的所有框架。 为简化起见,我们每行通过添加其来源(Git repo,github或二进制文件)以及可选的要下载的版本来编写一个框架。 注意 :第一次添加每个框架都需要其他必要步骤(请参阅:将框架添加到应用程序)。 迦太基更新 该命令将通过解决所有依赖关系来下载Cartfile中列出的所有框架; 构建它们(如果未指示版本要求,则下载依赖项的最新版本)并更新解析文件carthage.resolved ,列出所有依赖项(甚至是嵌套的依赖项),并列出每个要下载的确切版本。 迦太基靴 此命令将完全按照carthage.resolved文件中的说明下载和构建框架。 如果文件( carthage.resolved )不存在,则此命令将执行update ,它将解决依赖关系并(重新)生成它。 战略 首先,它包括将Cartfile和carthage.resolved添加到版本控制系统(大多数情况下为Git),并排除Carthage目录及其子目录,以使存储库轻巧。 然后,所有团队成员每次需要获取所需框架时都需要使用carthage bootstrap (例如,当切换到不包含相同框架版本的新分支或包含新框架的分支时)。 最后,仅在确实需要更新框架并将这两个文件添加到commit (当然,在测试和/或调整实现以适应更改之后),才使用carthage update 。 一般 可以将相同的策略应用于其他依赖项管理工具,例如: Cocoapods ,带有pod install , pod update以及Podfile和Podfile.lock Bundler ,具有bundle install , bundle update以及Gemfile和Gemfile.lock 并且可能是其他同类工具。 本文的其他版本:法语 Github项目: 迦太基

在视图坐标系之间转换框架

知道子视图的确切位置是一种可以在多种情况下派上用场的技术。 您可能想知道用户是否可以看到该视图,从视图的初始位置执行动画或将视图还原到其原始目的地。 有很多用例。 您可能还会想到更多。 但是,当您要执行此操作时,您不能仅仅依赖目标视图的框架,因为它只是其超级视图坐标系的一部分,这很快会引起问题,具体取决于您如何构成视图层次结构。 幸运的是, UIView和NSView都有一些方法可以为我们提供所需的结果。 如果您阅读我的上一篇有关框架如何在macOS上工作的文章,您可能还记得我们曾简要介绍过坐标系。 因此,让我们深入了解如何在不同的坐标系之间转换框架。 现在,我们已经设置了场景,让我们看一下整篇文章所涉及的方法, convert(CGRect,to:UIView?)方法。 如果我们检查从访问视图框架中获得的值。 它是视图坐标空间内的正确值,但是当尝试在扩展到视图坐标空间外部的上下文中组合这些类型的值时,这并不能使其普遍正确。 我们要实现的是知道视图在屏幕上的确切位置,而不是子视图内的位置。 因此,通过传递当前帧并将其指向所需的坐标空间,我们现在可以获得所需的测量值。 您可以切换到任何您喜欢的坐标系。 我选择了过去与我最相关的窗口。 在实现中执行此操作时,访问视图的窗口很简单。 所有UIView都有对其所属窗口的可选引用,如果该值为nil,则表示该视图尚未添加到窗口中。 附带说明,这只是冰山一角。 这些方法中有更多的是采用点而不是框架。 请查看UICoordinateSpace以获取更多信息。 https://developer.apple.com/documentation/uikit/uicoordinatespace 这些方法在UIWindow上也可用的原因是它继承自UIView ,后者又符合UICoordinateSpace 。 如您所见,这是直接但功能强大的,但是macOS呢? 让我们看一下带有一些macOS代码的另一个示例。 该技术本身以及转换时的结果保持不变。 这两个示例之间唯一明显的区别是,它使用NSView表示窗口。 原因是NSWindow不符合PlaygroundLiveViewable 。 即使这看起来很虚伪,但在思考如何解决特定情况时,该技术也具有巨大的价值。 我在优化滚动视图和集合视图的滚动性能时都使用了此方法,如果该视图在屏幕上不可见,则不执行布局操作。 我还使用了这些类型的值来定义核心动画的开始和结束位置。 我相信您可以提出更多方案,关键是要知道该技术可以扩展您的工具箱,并且您获得的工具箱越大,找到问题的最佳解决方案就越自然。 希望您觉得这有用,对我而言,这已经无数次挽救了生命。

如何在macOS上编写没有界面构建器的NSViewController。

在上一篇文章中,我写过关于在Cocoa中为常规NSView设置背景色的信息。 因此,要想打个比方 ,我想分享如何制作NSViewController而不使用笔尖/ xib或情节提要。 这似乎是一件微不足道的任务,确实如此。 但是,在没有先验知识的情况下,您可能会很快发现一个基本的陷阱。 让我们在旅途中展示这个节目,看看一些代码。 就像上一篇文章一样,我将分享如何在iOS中完成此操作。 在这里,我们有一个名为MyViewController的NSViewController子类。 空视图控制器在这里没有什么特别有趣的。 非常简单! 让我们为macOS尝试相同的示例,看看会发生什么。 看起来一样,应该表现得一样吗? 好吧,也许有人会假定,但是,这会给您以下日志消息: -[NSNib _initWithNibNamed:bundle:options:]无法加载捆绑中的nibName:Apex.ViewController(空)。 就像消息中所述,您的视图控制器无法加载,导致其无法显示。 其原因是寻找显然不存在的nib文件。 由于接口构建器已深度集成到Cocoa的体系结构中,因此笔尖是macOS中的默认设置。 这意味着您必须做一些额外的工作才能使其正常工作。 幸运的是,它涉及的更改很少。 这里缺少的是视图控制器视图,要修复它,我们需要实现loadView方法。 因此,让我们看另一个示例,其中我们有一个不使用接口生成器的有效NSViewController实现。 就是这样,您现在可以在不使用NIB的情况下创建视图控制器。 编码愉快!

Mac App动画外卖

我正在开发需要完成一些动画的Mac App。 实际上,我对Mac App上的动画主题还很陌生。 例如,我的动画代码可以在iOS中使用,但是我想移植到Mac App。 这是动画的一些要点,动画沿x轴旋转图层。 应用3D变换 只是从iOS复制代码,我遇到的第一个问题是初始转换无法正常工作。 我想将初始状态设置为旋转45度,但是该层保持在朝前的位置。 最后,我意识到在Cocoa中,必须在应用转换之前将视图添加到视图层次结构中。 如果不添加为子视图,则不会渲染相应的视图。 因此,应用变换对其没有影响。 转换所有子视图 在寻找上一个问题的解决方案时,我认为这可能是默认情况下不支持CALayer的问题。 我什至以为可能无法将转换应用于相应视图的根层。 我最终知道,如果我为转换创建了另一个CALayer,并将该层插入到层层次结构中。 仅此层将被转换,所有子视图(如NSTextField)将保持不变。 另一个发现是,可以在将根视图添加到视图层次结构之前转换此层。 比较iOS动画API 在iOS中,可以使用“ UIView.animateWithDuration()” API进行动画处理。 该方法允许我设置持续时间,延迟,阻尼系数以及完成块。 但是,这个漂亮的API或类似的东西在Cocoa中不可用。 我最终使用“ CABasicAnimation”为旋转动画,然后使用“ CATransaction”应用完成块。 我可以选择使用委托方法来在动画完成时引起注意,但是我认为完成块使代码更清晰。 动画转换 如前所述,我使用CABasicAnimation对旋转进行动画处理。 它正在使用keyPath。 由于我要使图层沿x轴旋转,因此必须使用“ transform.rotation.x”。 该API非常简单,但是不够迅速。 keyPath的使用不是类型安全的。 自Swift 3起,此类API将会有巨大的改进。 Swift 3的API已变得稳定。 这将在Xcode 8公开发布中正式提供。 这是此职位的示例操场。 参考文献: 如何将适用于UIView的视图转换应用于NSView? 将NSImageView的CALayer旋转90度 CATransform3DRotate旋转360度 CATransform3D关键路径 XCPlayground基础🎪

从Swift 2的ErrorType获得更好的NSErrors

自10.2.7版以来,可可就包含了NSError 。 这是在Cocoa应用程序中表达和返回错误的标准方法。 NSError不仅仅是简单的错误处理代码可以使用的对象。 它具有许多属性和相关的API,尤其是在macOS上,使其非常适合直接呈现给用户。 自从Swift 2引入以来,就可以抛出 Swift ErrorType实例,并使它们自动桥接到NSError。 不幸的是,这种桥接行为相当有限。 桥接到Objective-C API的ErrorType实例非常简单。 他们缺乏本地化的描述,故障原因,恢复建议,帮助锚等。 如果您仅开发移动应用程序,这似乎并不那么糟糕。 大多数iOS应用程序不使用错误恢复或帮助锚等功能。 如果像我们一样开发macOS应用程序,那就更成问题了。 macOS内置了使用NSResponder或NSAlert的initWithError:上的-presentError :呈现丰富错误警报的支持。 如果提供的NSError实例具有完全填充的userInfo字典,则将大大改善用户体验。 例如: 相对于: 尽管iOS并没有像macOS那样立即提供给用户呈现NSError的功能,但是您可以使用UIAlertController或一些其他自定义的瞬态或内联警报,轻松在自己的应用中为NSError呈现创建类似的系统。 我们已经在为客户开发的iOS应用程序中做到了这一点。 未来是光明的 Swift Evolution提案SE-0112描述了Swift的未来版本将如何改善Error ( 错误类型的新名称)与NSError的桥接。 该提案解决了当前桥接行为的所有局限性。 但是目前,我们必须自生自灭 但是,与此同时,我们陷入了Swift 2的困扰– Xcode 8和Swift 3的初始beta版本没有包含SE-0112的实现,但是最近它已经实现(即,Xcode 8 beta 5包含了新的Error协议)。 下面,我提供了一种扩展ErrorType的简单机制,以将更丰富的NSError行为带入您的iOS和macOS Swift 2应用程序。 NSErrorUserInfoValueProviding Itty Bitty Apps 总部位于澳大利亚墨尔本, 为大小客户提供了出色的移动和Mac软件。 这也使 揭示   -适用于iOS开发人员的功能强大的运行时视图调试。

Jirassic,时间追踪做对了!

当我被公司聘用并开始以敏捷的方式工作时,我还必须跟踪自己所做的一切,并在Jira时间表中进行报告。 我理解它们,但这对我来说真的很痛苦,我当时使用钢笔和贴纸来做,我忘了记笔记,松开它们或者它们不完整,所以最终我的报告只是一个猜谜游戏。 再加上我在月底将它们写到时间表中的事实,您可以看到令人沮丧的事情(时间表可能是最糟糕的软件)。 我决定结束这场混乱,开始写吉拉西奇。 我应该在应用程序中记录我完成的任务,他应该根据每个完成的任务的时间戳计算我在每个任务上花费的时间。 这个简单的想法立即消除了我的挫败感。 但这还不够,在2年的开发,使用和测试过程中,它演变成了一种产品。 现在可以: 自动跟踪我的任务,无需手动添加。 使用另一个名为Jit的工具基于git commit进行此操作,该工具也解决了其他一些问题。 跟踪每日Scrum会议。 也浪费时间 跟踪代码审核时间 追踪午餐时间 它基本上跟踪程序员将在工作中自动执行的所有操作。 每当您希望在Jira时间表中编写它们时,都可以转到“报告”选项卡,然后将粘贴好的任务分组复制并为您计算时间。 我正在自动执行此步骤,可能不容易或不可能,但我也会在可能的地方添加其他服务(如果有,请等待您的建议) 还有一个iOS应用程序也可以查看您的任务,专为Scrum会议而设计,您只需要查看它们即可,而无需进行编辑。 这是我的另一个问题,在Scrum会议中停电,我只是不记得自己在做什么。 我从一开始就使用Parse编写了这篇文章,直到Facebook杀死Parse为止,这一切都很轻松。 我花了一段时间没有iOS应用程序,所有内容都写得很差,无法切换后端。 当时,我们正在学习有关工作中的干净架构的知识,然后我立即开始在应用程序中应用这些概念。 现在,它在Mac上使用Sqlite,在iOS上使用CoreData和iCloud对其进行同步。 整个应用程序的体系结构允许我随时更改此位置。 代码在git上供个人使用。 谢谢,让我知道您的想法。 时间跟踪正确完成 Jirassic可以开箱即用地跟踪会议和午餐,但是如果您是程序员,则可以使它更多地自动化,您可以… www.jirassic.com ralcr / Jit Jit –连接到jira并通过仅指定任务号来创建分支的Git命令行工具 github.com Jirassic在Mac App Store上 阅读评论,比较客户评价,查看屏幕截图,并进一步了解Jirassic。 下载Mac OS X…的Jirassic… itunes.apple.com

关于开发人员macOS Mojave的5件事

苹果刚刚宣布了面向开发人员的即将发布的名为Mojave的macOS更新(版本10.14)。 最终发布日期可能是9月或10月,这已经在科技界引起了轰动。 这可能会影响已经存在macOS应用程序的5种方法: 64位计算机已经存在至少10年了。 但是,许多较旧的应用程序仍然仅支持32位。 这意味着macOS必须同时支持32位和64位应用程序。 苹果已经宣布, Mojave将成为支持32位的最终操作系统。 通过Mojave针对开发人员的这一更改, 您有一年的准备时间并为10.15(适用于Apple的第一个64位操作系统) 更新其构建 。 否则,您的旧版32位应用程序将在2019年秋季不再运行。 macOS Mojave现在要求您的应用在使用摄像头,麦克风或任何自动化设备 (例如AppleScript和Apple Events)时请求权限。 这意味着,如果您的应用程序使用这些功能中的任何功能,则需要更新代码以请求这些权限,并在未授予权限时进行处理。 深色模式是更改UI以便在深色主题上使用更亮的功能 。 开发人员喜欢它,并且只要考虑到这一点构建应用程序,它就看起来很漂亮。 若要发挥优势,开发人员可以查看 有关如何支持暗模式的 Apple文档 。 对于网站,请确保您的背景颜色设置正确,并及时更新您可以添加到样式中的可能查询,以使其在黑暗模式下保持良好外观。 使用Mojave,Safari用户将必须开始明确地授予某些网站跟踪它们的权限。 如果您运行的网站使用任何形式的跟踪或像素定位,请注意这些更改。 您可能需要调整跟踪网站用户交互的方式。 股票应用在Mojave上使用“小杏仁饼”的示例 UIKit是用于开发iPhone和iPad应用程序的用户界面的框架。 有传言说“ Marzipan”是将UIKit引入Mac的桥梁。 在针对iOS开发人员的macOS开发文章中,我们推测了“ Marzipan”的含义。 好吧,今年他们宣布将把它带给Mac开发人员……可能在明年。 他们还为我们在Mojave中提供了预览,其中包括Home,Stocks,News和Calculator等应用。 虽然我们可以看到生成的应用程序,但仍然存在许多问题,例如: 这些应用的外观如何? 该框架使用起来有多容易? 同时构建Mac App和iOS App是否容易? 对于那些现在正在构建macOS Apps的人,这意味着有时间通过​​以下方式准备您的应用程序: 确保您正在组织代码以使用较新的API和方法 避免过时的代码和API 正确使用可在Apple平台上使用的其他框架和API,例如CoreData,Metal,CoreML等。 借助Mojave中面向开发人员的所有新功能,Apple首次为我们提供了路线图。 这意味着我们有时间到2019年第四季度: 更新macOS应用程序以仅使用64位 在用户界面中支持黑暗模式 支持增强的应用程序权限 (相机,麦克风等) 清理您的体系结构以正确使用跨平台框架和API。 […]

为iOS和macOS自托管您自己的StrongSwan IKEv2 / IPsec最新VPN服务器

如果使用教程配置了strongSwan,则很可能使用的是弱加密。 我曾是。 在升级设置之前,您可以按照以下方法进行检查。 了解您使用VPN的方式,跳至操作方法 。 序幕 如果您了解Internet隐私,那么您可能会担心公共Wi-Fi网络如何容易受到欺骗和中间人攻击。 您的互联网服务提供商(或ISP)可能如何记录您的每笔上网行为。 一些DNS提供商如何记录您使用的应用程序以及您的浏览习惯。 简而言之,有多少公司正在努力(并成功地)在线跟踪您。 许多人建议使用Tor或虚拟专用网(或VPN)来减少您与这些公司共享的在线业务量,并且猜测,这是绝对正确的。 话虽如此,仅使用VPN并不是万灵药,而且这个故事(也许过多地)解释了原因。 免责声明#1:如果您使用VPN匿名。 你不是! VPN不是匿名工具。 Tor是更好的选择,但是即使使用Tor,您的身份也可能被泄露。 免责声明#2:如果您使用VPN盗版您可以负担得起并关心隐私的应用程序,电影或音乐, 请不要这样做 。 互联网之所以混乱,部分原因是公司被迫通过广告和数据挖掘来获利,这就是为什么我们如此之高地被追踪的原因。 民族国家政策是另一个原因,但这是另一个原因。 在这个故事中,我将带您了解隐私,并解释为什么我建议始终使用VPN(即使在家中)。 为什么仅使用VPN不能解决所有隐私问题。 为什么使用第三方VPN提供商可能不是我们最好的隐私选择。 最后,我将解释为什么我建议strongSwan,以及如何使用最新的加密技术来自我托管自己的VPN服务器:具有128位ICV的256位AES-GCM,SHA2_384 PRF和具有3072的Diffie Hellman位模量。 始终使用VPN(即使在家中) 相信我,连接免费Wi-Fi极具诱惑力。 话虽如此,连接到免费Wi-Fi(即使受到WPA2的保护)也会损害您的隐私和安全性。 我将简短地整理一段视频,以说明为什么但现在暂时(隐喻地)闭上眼睛,并对在接入点(或Wi-Fi路由器)和计算机之间流动的所有这些字节数据进行成像。 使用Wireshark可以轻松拦截其中的每一个。 在理想情况下,计算机发送和接收的所有字节都将使用TLS进行加密,但事实并非如此。 再说一次,即使是这样,如果有人站在中间并破解这些字节该怎么办。 这称为中间人攻击。 当心“您的连接不安全”错误。 如果得到一个,请立即关闭窗口! 您可能是其中一个的受害者。 现在,在家里,您可以信任网络吗? 错误。 您的ISP可能正在记录您的在线所有举动。 简而言之,我建议即使在家中也要始终使用VPN。 VPN本身并不能解决所有隐私问题 假设您是一个狂热的VPN用户。 您可能会猜测您的隐私得到了保护。 不幸的是,不是,这就是原因。 VPN仅在正确配置和连接后才有效。 为了连接,您的计算机需要访问互联网。 看到这有多矛盾? 当要首先由VPN联机时,如何使用VPN对其进行在线保护。 哇。 好吧,在iOS上您根本做不到,这就是为什么从隐私角度来看,作为智能手机的跟踪设备(在如此之多的层次上,到后来的故事)永远不会被视为“安全”的。 幸运的是,现在在macOS上,我们可以做很多事情,这是另一个故事的主题。 简而言之,只要您的Mac(或iPhone)连接到互联网(在设备有时间连接到VPN之前),它就会立即将大量数据发送到互联网,这可能会泄露您的身份,有时甚至使您容易受到攻击。 使用PF设置自己的macOS内核级IKEv2 […]