Tag: xcode

第五幕基本礼品店

艾米(Aimi Samantha)Garcia Medellin A01570476

夏季应用开发

(反射) 今年夏天,通过“芝加哥一个夏天” , “午夜敲门”和芝加哥公立学校的CS4All ,该市的几名15至19岁的年轻人有机会从事应用程序开发工作。 支付给学生的费用是学习计算机编程,开发应用程序,然后将该应用程序上载到位于城市西南侧Gage Park高中的iPad或iPhone。 在整个叙述中,夏季工作的年轻人被描述为青年和学生,而员工则被描述为教师和教员,因为员工和老板所扮演的学习量往往比老师和老板的经历大得多。学生。 Swift和Xcode 苹果公司开发了自己的编程语言,称为Swift。 (https://developer.apple.com/swift/)学生学习了Swift,以及如何使用名为Xcode的Apple程序进行编码和编程。 苹果公司还开发了完整的课程表,他们称之为“每个人都可以编码(https://www.apple.com/ae/education/everyone-can-code/) ”,以使学生通过自己称之为的东西接触Swift一个游乐场。 在这种环境下,将指导学生学习一些编码概念,例如变量,常量,函数等,尤其是它们在Xcode中的工作方式。 还指导学生完成多项任务,例如创建 学生创建的应用程序是使用Swift在Xcode内开发的。 学生和教职员工 我们是谁? 我们是谁 谁参与了该计划? 二十名学生大部分来自Gage Park高中,周边的Englewood社区或更南端的学生,还有几名来自城市西侧的学生。 学生主要是非裔美国人以及三名拉丁裔学生。 在初步调查中,大约三分之一的学生以前从未做过编码。 一些人在可汗学院学习过JavaScript。 大多数人在以前的编码课程中只真正完成过Photoshop。 不用说,所有的学生都完全不熟悉Swift和Xcode,但是他们都对学习特别是与应用程序开发有关的学习感到非常兴奋。 每个人都想制作一个应用程序,进入应用程序商店并开始赚钱,或者他们一直说:“赚钱!” 该程序有两名讲师,可在出现故障排除需求时为学生提供帮助,并帮助学生浏览Apple的课程。 他们的任务是确保学生在遇到很多困难或混乱时能够解决问题并坚持不懈。 他们还必须想出办法,使这些材料更具吸引力并易于使用,特别是对于那些以前从未做过编码或要求大量阅读的学生来说,是必不可少的。 讲师发现了诸如Code.org之类的程序,该程序在CPS和全球范围内也广泛使用,以使青年人在不太繁重的文本环境下进行编码。 讲师还提供了有关演讲最佳实践的指导,并定期围绕工作场所礼仪问题提供咨询服务。 青年和工作人员一起工作了七个星期,目标是在计划结束时展示一些应用程序。 创建了一个小型数字社区,以通过应用程序开发解决现实世界中的问题。 入门 为便于教学,并跟踪日常活动和任务,创建了一个网站“ Summer App Development” (tinyurl.com/sumappdev) 。 在@summerappdev句柄下创建了一个Twitter帐户(https://twitter.com/summerappdev) ,以突出显示并跟踪我们在七个星期内的活动。 进行了初步调查(https://goo.gl/forms/Q2CtUuvPw85kKMmh2) ,以了解学生从一开始就在哪里使用编码和技术。 从这项调查中,我们发现大约三分之一的人以前从未做过任何编码。 最初的调查帮助我们意识到,在没有任何背景经验的情况下,学生将无法直接进入Xcode并使用Swift。 然后向该青年提供了Code.org的帐户。 成对学习时,学生在“加速课程”中进行配对编码 。 不久,学生开始创建循环,函数,然后将循环和函数嵌套在循环和函数中。 在此应简要说明设置。 学生可以使用iMac台式机和MacBook Pro笔记本电脑。 […]

如何为您的应用设置不同的图标

在构建应用程序时,我们通常会在设备上安装App Store版本,但是我们也需要安装beta版本,如果我们想将它们都安装在同一设备上,则需要区分它们。 最好的解决方案是使用不同的图标。 构型 第一步是为所需的每个图标创建配置。 例如: 开发环境的调试配置, Beta环境的Beta配置, 产品环境的发布配置。 默认情况下,将创建Debug和Release配置,我们可以通过复制现有配置来添加Beta配置。 应用程式图示 接下来,我们必须在Assets.xcassets文件中创建几个应用程序图标 。 您可以随意命名,理想情况下,您希望为每个配置创建一个“应用程序图标”。 构建设置 在目标的“构建设置”中,您需要为每个配置指定“ 应用程序图标”和“ 捆绑包标识符 ”。 资产目录应用程序图标集名称 这样,将根据当前配置自动选择应用程序图标。 产品捆绑包标识符 由于应用由其捆绑包标识符标识,因此我们需要为每个配置指定一个不同的捆绑包标识符。 然后,将为每个捆绑包标识符创建一个不同的应用程序。 代码配置 有时,您还想检测代码中的配置,这对于常量尤其有用,例如您的API的域。 有几种方法可以做到这一点,最简单的方法是在“构建设置”中添加一些标志。 然后,您可以在代码中访问这些标志: struct Constants { #if DEBUG static let domain = “dev.example.com” #elseif BETA static let domain = “beta.example.com” #else static let domain = “www.example.com” #endif } 当然,目标是避免在太多不同的文件中使用它们,这就是为什么我通常将所有常量放入此条件语句中。 方案 […]

与NSCollectionViewItem纠缠

如果我此时尝试运行该项目,将显示错误。 我最终进行了搜索,很多人以前都遇到过这个问题。 自2014年以来,它发生在大型API更新之前。 到目前为止,没有解决方案,只能删除它。 覆盖内容大小并不容易 我来自iOS开发背景,并且一直在使用UICollectionView。 一个常见的技巧是更改contentSize,以便获得更大的可滚动区域。 将偏移量设置为特定区域以进行显示很有用。 与UICollectionView不同,NSCollectionView中没有’contentSize’属性。 相反,可以使用NSCollectionViewLayout中的属性“ collectionViewContentSize”来更改contentSize。 这也存在于iOS的对应版本中。 这也意味着,该使用2015年更新中可用的新API了。 然后,假设我更喜欢流布局,我将创建NSCollectionViewFlowLayout的子类。 我现在可以覆盖该属性以允许更大的内容大小。 在替换布局时,我还将在代码中设置项目大小。 harryworld / NSCollectionViewItem 通过在GitHub上创建一个帐户为NSCollectionViewItem开发做出贡献。 github.com 创建项目的占位符可能会导致问题 每个项目都有一个大小。 有时,我不想使用数据源制作商品,而是想将其创建为占位符。 这是根据项目的内容执行一些尺寸计算的。 如果仅创建项目,则不会链接其中的UI组件。 通常,我们从对象连接那些组件。 当NSCollectionView制作项目时,它将正确链接它们。 但是,如果我使用构造函数初始化该项目,则这些组件不会连接。 有时,我什至会收到“视图未加载”的错误。 解决方案分为两部分。 第1部分:为了确保NSView在创建时可用,您应该将视图同时连接到文件的所有者和对象。 在这种情况下,我们将依靠文件的所有者连接来初始化视图。 第2部分:对于其他UI组件,它们充当Interface Builder中的子视图。 我们需要手动连接它们。 只需循环浏览所有子视图,并将它们与预定义的标识符进行匹配。 harryworld / NSCollectionViewItem 通过在GitHub上创建一个帐户为NSCollectionViewItem开发做出贡献。 github.com 我已经创建了解决所有这些问题的示例项目,您可以在此处找到源代码。

XCode iOS版新游戏-第1部分

Pre guntas porque en los视频教程,没有重要的解释性的los复选框,opciones y otras cosas que aparecen al inicio de un proyecto en Xcode… Muchas veces cuando iniciaba在Xcode上使用了程序化的iOS应用程序,并在comenzaban con algo como上播放了视频教程: “ Iniciamos el proyecto pulsando 创建一个新的Xcode 项目,seleccionamos Single View Application ,ponemos x nombre yces 连续式”我的预告片是“¿? “ Bien empecemos por laprima vista al abrir Xcode y si no conoces parkaún,descubrirásla mina de […]

加快Xcode构建

随着项目的发展,构建时间可能会成为问题。 但是,您可以对Xcode进行一些调整,这些调整可以减少无需任何额外工作即可完成构建的时间。 增加线程数 : 默认情况下,Xcode通常使用与计算机CPU中相同数量的线程。 但是,通过将线程数增加到默认值以上,可以显着减少构建时间-在某些情况下可以减少30%。 这利用了某些处理器对多线程或仿真其他内核的能力。 请记住,您可能需要尝试确定代码库中并行生成的收益是否递减,然后相应地调整线程数。 启用新的构建系统: Apple的“新构建系统”完全用Swift编写,旨在提高整体性能和依赖性管理。 请注意,虽然新版本系统在Xcode 9+中可用,但是必须在Xcode的Project / Workplace Settings下启用它,因为“ Standard Build”将是默认选项。 或者,可以通过命令行启用“新构建系统”(详细信息在下面链接)。 您可以在此处找到更多详细信息和启用新构建系统的说明: Xcode用于快速Swift构建的新构建系统 调整iOS模拟器: ãApple iOS测试模拟器可让您跨不同的软件和硬件组合进行测试(但仅限于Mac)。 通过使用“物理尺寸”或“像素精确”窗口尺寸,您既可以减少测试的大小,又可以减少完成测试所需的时间。 最终,这些配置更改将使用更少的资源,并有助于在模拟任何人都看不到的像素完美的iPhone阅读器时防止测试变慢。 您可以在此处找到配置说明:调整Xcode iPhone模拟器的比例和大小 使用并行化的构建: 并行构建可以通过构建不同时依赖于彼此的应用程序组件来减少Xcode的构建总时间。 对于可以轻松并行运行的,具有许多较小依赖项的项目,可以节省大量时间。 收益显然取决于代码的编写方式,但是值得测试,因为默认情况下未启用并行化构建。 您可以通过编辑Xcode方案并在方案的构建操作中选中“并行构建”来启用并行构建。 您可以在此处找到有关利用并行化构建的更多详细信息:什么时候应该检查Xcode方案的“并行化构建”? 打开构建时间摘要: 构建时间摘要使您能够报告每个Xcode构建的构建时间。 换句话说,构建时间摘要可以帮助您识别影响构建时间的构建部分,并进一步优化构建顺序以获取整体收益。 构建时间摘要所提供的见解虽然本身并不能解决,但在尝试优化构建时间时,可以在确定工作的优先顺序时很有用。 更大的构建机器: ‍从技术上讲,这不是Xcode的调整,但是较大的构建计算机在尝试加快构建速度时确实产生了巨大的影响。 更高的计算能力仅意味着可以更快地完成流程和构建。 我们的测试表明,从双核Mac mini迁移到12核Mac Pro可以使速度提高3倍,而无需付出任何额外的努力。 当您准备升级或扩展Mac基础架构时,请随时通过MacStadium与我们联系。 ‍其他资源: 当然,这些只是可以用来加快Xcode构建时间的一些建议。 以下资源可以提供有关改善Xcode构建时间的其他信息和建议。 优化Swift代码的编译时间 从iOS Edit-Build-Test周期减少了50%的等待时间 加快Xcode中Swift编译和编译时间的8条技巧 如何使用Xcode 9和iOS 11构建更好的应用程序 ‍ […]

iOS应用验证失败

有时,当我们想在设备上安装另一个iOS应用程序时,可能会遇到ApplicationVerificationFailed 。 这种情况很少见,因为这实际上是环境和手段的结合,您收到的应用程序没有团队的配置文件。 无论如何,我们有能力解决这个问题。 计划: 获得自己的配置文件 退出应用 安装应用 前提 首先,要使我们的生活更加美好和轻松,我们应该安装ideviceinstaller和fastlane : $ brew install ideviceinstaller $宝石安装fastlane 供应配置文件 然后,我们需要获取配置文件。 如果已经有了,则可以跳到下一步,否则,请继续。 正如苹果所说: Xcode是创建iOS供应配置文件的最简单方法。 将设备连接到Mac,然后在Xcode的Organizer窗口中单击Use for Development。 使用与您的Apple Developer Program成员资格关联的Apple ID登录,Xcode将生成一个包含您的证书和设备标识符的配置文件。 因此,在这种情况下,签名类型无关紧要,是个人团队还是组织团队。 退出应用 这里我们需要三件事: .ipa .mobileprovision iOS开发人员证书 我希望您有一个.ipa,我们可以从XCode获得的其他: 所以: 将iOS Team Provisioning Profile从XCode工具提示拖放到带有.ipa的文件夹中 从相同的工具提示中复制iPhone开发人员证书 然后像这样通过fastlane退出应用程序: $ fastlane叹气辞职testapp.ipa –signing_identity“ iPhone开发人员:a.alterpesotskiy@test.com(KJRTP5GJS9)” -p“ test.mobileprovision” 安装应用 。 。 如果看到此弹出窗口,则可以转到设备上的“设置” =>“常规” =>“设备管理 ”,以信任开发人员并允许运行该应用程序(有关更多信息,请参阅Apple文档)。 […]

在本地原生共享库扩展

共享扩展名:React Native和Redux。 他在西班牙干草堆上进行了现场勘查,并在西班牙的埃斯巴萨和西班牙的萨尔瓦多省的萨洛尔河之间进行了考察。 分享到以下内容:扩展名:无限制的扩展名:没有必要的扩展名: ¡阿斯奎·瓦莫斯你好! 从根本上讲,Remote Persist(empleando como storage AsyncStorage )和Obtiene Toda laInformationación中立语言是什么意思,重要的是store和其他store 。 Apple的Android操作系统保护功能可扩展到Android设备上的共享库扩展名,适用于Apple sistemas,Apple Bi estEstéculovoy和ceñirmetan solo al sistema操作Apple的扩展名zh-cn上的Androidescribiréuna segunda parte contando los pasos)。 诺塔 iOS las extensions(tanto las denominadas Share como las Action)上的Antes de comenzar es Importante destacar quesséparados,por a que no tienen acceso la carpetaprinciple laaplicación,es decirs es losdecurséscom的儿子tratadas como contenedores […]

iOS中的资源包和静态库

如何在静态库中使用图像,Xib和情节提要之类的资源。 默认情况下,这在动态库中很容易实现,但是当涉及静态库时,可能会遇到一些挑战。 在本文中,我希望解释如何在静态库中使用故事板和图像之类的资源。 让我们跳进去。 步骤1:创建静态库 导航到“文件”->“新建”->“项目”,然后选择“ Cocoa Touch静态库”。 让我们给静态库起个名字。 那很简单! 步骤2:设定资源套件 导航到您的库项目,然后选择“添加目标”。 然后导航到macOS并选择Bundle。 命名资源束,我将其命名为Resources🙃 由于我们正在为iOS开发,因此将您的资源包基础SDK设置更改为“最新的iOS…”。 最后,将资源作为目标依赖项添加到您的静态库中。 步骤3:设定资源 在静态库中使用所有适当的配置和链接设置一个简单的ViewController和Storyboard。 为了使Storyboard成为捆绑软件的资源,您要做的就是将它们添加到目标的“复制捆绑软件资源”构建阶段。 现在您的静态库已准备就绪。 步骤4:链接静态库和资源包 通过创建一个简单的单视图应用程序并在viewDidLoad上模态显示“ MyViewController:”,来使用我们的新静态库。 为此,您必须将静态库.xcodeproj拖放到基本应用程序中。 这可能看起来像这样。 然后,您可以通过“链接的框架和库”链接静态库,就像这样。 最后,添加将资源束从静态库链接到基本应用程序。 为此,我们只需要将其从导航器窗格拖到应用程序项目的“ Copy Bundle Resources”阶段即可。 这应该看起来像这样。 第5步:使用它吧! 🎉 将以下代码添加到基本应用程序的视图控制器中,以便可以从适当的资源包中加载Storyboard。 一旦捆绑包被加载,您就可以简单地实例化并呈现它。 小菜一碟吧! 图像呢? 是的,您可以将图像引入静态库,但是必须将图像资产添加到资源包中,然后通过Xib,Storyboard或Bundle加载它。 希望您发现本教程对您有所帮助。 如果您有任何问题,请给我ping通,我很想听听您关于在静态库中使用资源包的想法。 和平✌️

使用LLDB在Xcode中进行调试

数据冒险 犯了错误 有时,我们会对不正确的事情做出假设。 这种说法似乎很明显,这是人的天性。 编写软件时,最好质疑您的假设是否正确。 很多时候,您会发现,仔细检查后发现事情与最初出现的情况并不完全相同。 🤔挑战你的假设 使用Xcode时,可以质疑我们的假设的一种方法是使用调试器。 调试器是一种工具,可让您使用细粒度的控件检查和操纵代码执行。 通过调试,您可以更好地了解您的代码在做什么。 这篇文章旨在简要概述Xcode中的调试以及一些可以帮助您的工具。 我打算就调试主题撰写一系列文章,这是第一篇。 调试的主题非常广泛,本文并不旨在提供完整的概述。 如果您觉得缺少什么,请继续关注本系列的更多帖子。 另外,请随时给我评论。 崩溃的土地之旅 这听起来可能有些奇怪,但是可以将代码崩溃视为旅途。 当您点击运行时,它开始运行并编译。 在此过程中,它继续使用方法并具有许多特性。 最终,它成功地找到了坠机土地。 当您开始调试时,您只有一小幅图片。 您有起点和终点,但要知道如何到达那里,就需要追溯旅程的步骤。 为了帮助您完成旅程,Apple向您赠送了一个有价值的物品LLDB调试器。 控制台和LLDB LLDB是Apple提供的软件调试器,它是Xcode中的标准调试工具。 LLDB是一个功能强大的工具,可将应用程序分解为各个组件。 它的用途不仅限于Xcode IDE,即使您无法访问其源代码,也可以使用LLDB分解并检查应用程序。 鉴于功能和用途的广泛性,本文的含义更像是粗略的概述,我不想通过详细研究这些内容而超出范围。 调用堆栈 使用LLDB,我们能够检查调用堆栈以及堆栈中的特定堆栈帧 。 调用堆栈是由应用程序创建的数据结构,用于跟踪其所有行为。 数据结构 堆栈数据结构只是一个队列,在队列中添加的最后一个元素是从中返回的第一个元素(LIFO队列-先进先出)。这与物理世界中的情况大同小异:一堆砖的顶部(如果您从底部取出,即添加的第一块砖,它们都将崩溃。) 堆叠框架 在调用堆栈中有称为堆栈帧的结构。 堆栈框架包含有关为其创建执行的信息。 在调试时,许多此类信息可能会变得有用。 数据范围从局部变量到完成时返回的内存地址。 苹果文档: 程序运行时,它将有关正在执行的操作的信息存储在称为调用栈的数据结构中。 每次调用方法时,程序都会在调用堆栈的顶部推入一个新的堆栈框架 ,其中包含以下内容:传递给该方法的参数(如果有),该方法的局部变量(如果有的话)以及指向该地址的地址。方法调用完成后返回。 断点 如果您不熟悉代码断点,请允许我给您简要介绍一下。 在Xcode中,断点使您可以在特定点中断代码的执行。 这很有用,因为它使您可以在给定的时刻详细检查应用程序的状态。 断点类型 象征绕道 在进一步进入断点之前,让我们先谈谈符号化。 符号化是将内存地址映射到更简单的函数名称。 返回我们以前计划的编程 处理断点时,重要的是要了解有不止一种类型。 让我们简要地谈谈一些重要的类型: […]