首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Objective-C 中 9 种避免使用 Xcode 预处理器宏的方法

除了极少数例外,使用 Xcode 预处理器宏是一种代码气味。C++ 程序员们已经深有体会:" "。不幸的是,还有很多的 Objective-C 程序员尚未领悟到这一点。...除非您的自定义宏依赖于 Xcode 预处理器宏(如__LINE__),否则请将其重写为一个独立函数。(即便依赖于 Xcode 预处理宏,也要让您的宏调用另一个函数,并尽可能多地转移到该函数中)。...如果您选择保留,请删除 Xcode 预处理器宏。将它变成真正的注释,并附上解释,而不仅仅是代码。...有关 plist 的示例,请参阅《我如何在暂存和生产 URL 之间切换(How I Switch between Staging and Production URLs)》。...避免使用 Xcode 预处理器宏! 请再次在终端中执行此命令,以查找代码中可能违规的 Xcode 预处理器宏。您找到了多少?能否减少它们?剩余的宏是否合理?

14610

肘子的 Swift 周报 #055| 让技术为我所用,不要被其反噬

除了大量使用预置宏之外,根据业务需求定制自定义宏,能够显著提升开发效率并简化代码流程。...本文中,tit 不仅深入讲解了 Swift 宏的基础和进阶用法,还展示了如何在 Bilibili 会员中心模块开发过程中,通过自定义宏减少冗余代码的编写,优化整体开发体验。...但在某些情况下(如 List ),这一处理方式可能会阻碍性能优化。Vahter 提醒开发者留意该行为带来的影响,避免因误判而陷入调试陷阱。...Junping[13] 强调了通过 Inject 实现在 Cursor 中构建类似 Xcode 预览的开发体验[14],展示了如何在新的工作流中替代传统工具。...Ethan Huang[15] 正在制作系列视频[16],重点介绍如何在 Cursor 和 Xcode 之间实现无缝切换,帮助开发者更灵活地使用多种开发工具。

3100
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    肘子的 Swift 周报 #020 | 准备迎接 Swift 6 的到来

    宏的引入在一定程度上试图平衡这种矛盾,通过将复杂功能和特性封装成宏,使得更多开发者能够轻松受益。...然而,在当前的开发环境中,自定义宏的使用不仅会显著增加项目的编译时间,而且在宏较为复杂时,Xcode 的响应也会受到影响,导致代码自动提示和宏展开功能频繁出错。...前一期内容|全部周报列表 原创 如何处理 SwiftData 谓词中的可选值[3] Fatbobman( 东坡肘子 )[4] 由于 SwiftData 更改了数据模型的创建机制,而且谓词创建也采用了基于模型代码的类型安全模式...在 Xcode 8 推出之前,开发者可以通过访问未公开的 API,使用第三方插件来修改和增强 Xcode 的内部功能,赋予了广泛的自定义及扩展能力。...本文由 Pol Piella 撰写,详细介绍了自定义 Core Data 迁移的实现方法,包括创建映射模型文件和自定义迁移策略类。

    35010

    unreal C++初步介绍

    程序员利用C++即可添加基础Gameplay系统,然后设计师可基于这些系统进行构建或利用这些系统为某个特定关卡或游戏本身创建自定义Gameplay。...在这些情况下,C++程序员在文本编辑器(如Notepad++)或IDE(通常是Microsoft Visual Studio或Apple Xcode)中工作,设计师则在UE4的蓝图编辑器中工作。...PrimaryActorTick.bCanEverTick = true; } 属性出现在编辑器中 创建类后,现在让我们创建一些设计师可以在虚幻编辑器中设置的属性。...AMyActor::AMyActor() : TotalDamage(200), DamageTimeInSeconds(1.0f) { } 编辑窗口中显示如图: image.png 函数调用 如何在创建...如下所示: UFUNCTION(BlueprintCallable, Category="Damage") void CalculateValues(); UFUNCTION() 宏 负责处理将C++

    1.3K10

    用 Swift 来构建安卓应用|肘子的 Swift 周报 #071

    在这篇文章中,方君宇详细介绍了 URL Scheme 和 Universal Link 的配置方法,并探讨了如何在 SwiftUI 中处理深层链接事件。...项目的本地化效率,但其以英文文本作为键的方式,虽然提升了可读性,却带来了缺乏分组、上下文不清、翻译一致性差等问题。...它提供了自动语义键生成(#tk 宏)、预翻译 UI 组件(支持 40 种语言)、上下文感知翻译等功能,使得本地化更加高效且一致。...[18] .xcconfig文件是 Xcode 项目中去中心化管理构建配置的重要工具,能够帮助开发者将环境变量(如 API 地址、编译选项、日志级别)从 Xcode 界面和 Swift 代码中解耦出来。...在这篇文章中,Mirza Učanbarlić[21]演示了如何创建一个简单的 C 库并在 Swift 中使用它,涉及编译 C 代码、生成静态库、创建 Clang 模块 (module.modulemap

    5900

    iOS开发xconfig和script脚本使用详解

    Xcode target 在实际开发中一个Xcode创建的项目是可以有多个taget的,比如我们创建一个widget时Xcode会自动新建一个target对应这个widget,也可以自己新建,同一个项目有多个...Build Setting变量,不能代码里像使用宏那样使用,Xcode是支持利用GCC_PREPROCESSOR_DEFINITIONS在定义宏的,在Common.xconfig文件中加入如下代码: GCC_PREPROCESSOR_DEFINITIONS...[super viewDidLoad];    NSLog(@"-----------%@-------------",WEBSERVICE_URL);} 使用#include语法来包含其他配置文件,如#...Common.xconfig中第一个键的配置必须有:GCC_PREPROCESSOR_DEFINITIONS = (key)':通过key来指定每个模式下的对应的自定义键的名字,通常将宏的名字和key的名字保持一致...前面我们通过info.plist获取到了.xconfig文件中自定义的变量,再次我们同样通过info.plist来获取自定义的变量的值来当做宏使用,首先在info.plist中新建一个WEBSERVICE_URL

    2.8K10

    pch文件的使用

    在Xcode6之前,创建一个新工程xcode会在Supporting files文件夹下面自动创建一个“工程名-Prefix.pch”文件,也是一个头文件,pch头文件的内容能被项目中的其他所有源文件共享和访问...首先说一下pch的作用: 1.存放一些全局的宏(整个项目中都用得上的宏) 2.用来包含一些全部的头文件(整个项目中都用得上的头文件) 3.能自动打开或者关闭日志输出功能 虽然用了很久的Xcode6...但是项目是xcode5之前创建好的,所以一开始并没有发现缺少了这个pch文件。...苹果为什么要这么做呢,原因可能是因为大家把大量的头文件和宏定义放到pch里边,导致编译时间过长。苹果去掉他可能是要加快编译时间增加用户体验。虽然失去了编程的便利性。...如何在Xcode中添加pch文件: Command+N,打开新建文件窗口:ios->other->PCH file,创建一个pch文件 2  在工程的TARGETS里边Building Setting

    94150

    iOS之深入解析Xcode 13正式版发布的40个新特性

    二、通用 Xcode 13 包括对 Swift 并发编程的原生支持、对 Xcode Cloud 持续集成和交付的支持、对 Git 拉取请求的集成支持、使用 DocC 在 Swift 框架中创建和查看文档的能力...十一、索引 Xcode 索引宏名称,它们现在出现在 Open Quickly 中。...二十八、App Store StoreKit 2 引入了一个现代的基于 Swift 的 API,它利用了新的语言功能,如 Swift 并发性。...格式化 API 现在可用,它们专注于格式并消除了创建、配置和缓存格式化程序实例的需要。每个 Formatter 类型都有一个格式化函数。这些函数具有允许配置和自定义样式的参数。...四十、UIKit 对于针对 iOS 15 beta SDK 编译的应用程序,在文本视图和文本字段中键入时,按键命令不再拦截文本输入和文本编辑命令。

    8.8K40

    XcodeXcode 9 的全新功能您会喜欢的工具。内建 Interface BuilderXcode IDE

    重构和转换 全新的编辑器远不止于文本输入,更拥有新的内置重构和转换引擎。当您选择一个符号或代码块时,编辑器会提供如“Extract (提取)”和“Rename (重命名)”等强大操作。...image 自定义 Xcode 环境可以配置,几乎可以满足所有工作流程,包括诸如标签、行为和代码段的自定义功能。 ? image 标签 使用标签为项目创建独一无二的视图。...结合标签,您可以为自己的编辑、设计、构建或调试任务创建自定义工作环境。自定义行为还可通过单一的组合键,彻底重新排列您的窗口。 代码段 代码段库中有数十种预配置代码实现方式,比如定义新类或方法。...只需将窗口、按钮、文本字段和其他对象拖放到设计画布上,即可创建有效的用户界面。...例如,当显示不同语言时,可以让按钮优先保持特定大小或扩展以容纳更大的文本。 Interface Builder 可自动为您创建所有限制条件,确保提供一套兼容的规则。

    8.3K30

    iOS混淆探索

    等且保证不与系统冲突,完全摒弃简单的靠大量单词库堆砌以保证命名的唯一性的做法,真正模拟人工开发) 修改布局(Frame、Masonry、SDAutoLayout) 插入的是代码还是‘垃圾’(本工具通过封装网络请求,创建自定义控件...更别说“还有谁...”能识别宏、区分继承链等上下文关联内容,智能识别不可修改部分例如:+ (void)init;- (void)reloadData;基本能改,做到的有几个呢?”...功能 confuse是一款混淆工具,尽可能模拟人工开发,仿照Xcode部分功能,避免机核4.3、2.1、2.3.1、账号调查等。...病毒编译前会执行一个可疑脚本代码,支持正则扫描 资源替换,混淆前指定需要替换的资源文件夹,自动进行同名文件替换,方便快捷 修改图片,质量修改、大小偏移、局部像素微调、RGBA偏移、模式修改(支持热更新) 修改文件属性,如创建时间...修改颜色,对项目中UI控件颜色随机偏移,识别宏 UI布局偏移,支持Frame、Mansonry、SDAutoLayout常见布局微调 插入文件,生成其它文件(封装网络请求,创建自定义控件,模拟正常开发)

    1.7K31

    iOS CocoaPods 子模块实现多语言

    我们需要关心的就是 tbl(table) 和 bundle 这两个值,由于公司 iOS 项目全部实现了业务层级的组件化,所以我们的 .strings 文件可以根据组件来划分,以组件名作为 table 的名称,如订单组件...(可以自定义文件名和位置) 因为这个多语言功能是在子模块的,所以只能使用第三种。...3.1 新建自定义本地化文件 首先需要command + N,选择iOS -> Resource -> Strings File,文件名(可自定义)为:Contact.strings 文件创建成功,查看...Xcode左侧导航列表,发现多了一个名为Contact.strings的文件(此时文件左边还没有可以点击的三角箭头) 选中Contact.strings文件,在Xcode的File inspection...中点击Localize,目的是选择我们需要本地化的语言,先选择一个语言;然后我们发现Xcode右侧的File inspection变成了可以选择其他语言了,选择所需的多语言。

    2.6K10

    C++ 环境设置

    七天提升C语言 本地环境设置 如果您想要设置 C++ 语言环境,您需要确保电脑上有以下两款可用的软件,文本编辑器和 C++ 编译器。 文本编辑器 这将用于输入您的程序。...通过编辑器创建的文件通常称为源文件,源文件包含程序源代码。C++ 程序的源文件通常使用扩展名 .cpp、.cp 或 .c。...以下部分将指导您如何在不同的操作系统上安装 GNU 的 C/C++ 编译器。这里同时提到 C/C++,主要是因为 GNU 的 gcc 编译器适合于 C 和 C++ 编程语言。...如果是多个 C++ 代码文件,如 runoob1.cpp、runoob2.cpp,编译命令如下: $ g++ runoob1.cpp runoob2.cpp -o runoob 生成一个 runoob...-DMACRO 以字符串"1"定义 MACRO 宏。 -DMACRO=DEFN 以字符串"DEFN"定义 MACRO 宏。 -E 只运行 C 预编译器。 -g 生成调试信息。

    2.3K51

    如何进行环境配置

    本地环境设置 如果您想要设置 C++ 语言环境,您需要确保电脑上有以下两款可用的软件,文本编辑器和 C++ 编译器。 文本编辑器 这将用于输入您的程序。...通过编辑器创建的文件通常称为源文件,源文件包含程序源代码。C++ 程序的源文件通常使用扩展名 .cpp、.cp 或 .c。...以下部分将指导您如何在不同的操作系统上安装 GNU 的 C/C++ 编译器。这里同时提到 C/C++,主要是因为 GNU 的 gcc 编译器适合于 C 和 C++ 编程语言。...一旦安装上 Xcode,您就能使用 GNU 编译器。 Xcode 目前可从 https://developer.apple.com/download 上下载,需要使用 apple ID 登录 。...-DMACRO 以字符串"1"定义 MACRO 宏。 -DMACRO=DEFN 以字符串"DEFN"定义 MACRO 宏。 -E 只运行 C 预编译器。 -g 生成调试信息。

    1.2K20

    如何进行内存设置

    ⭐本文介绍⭐ 本地环境设置 如果您想要设置 C++ 语言环境,您需要确保电脑上有以下两款可用的软件,文本编辑器和 C++ 编译器。 文本编辑器 这将用于输入您的程序。...通过编辑器创建的文件通常称为源文件,源文件包含程序源代码。C++ 程序的源文件通常使用扩展名 .cpp、.cp 或 .c。...以下部分将指导您如何在不同的操作系统上安装 GNU 的 C/C++ 编译器。这里同时提到 C/C++,主要是因为 GNU 的 gcc 编译器适合于 C 和 C++ 编程语言。...一旦安装上 Xcode,您就能使用 GNU 编译器。 Xcode 目前可从 Sign In - Apple 上下载,需要使用 apple ID 登录 。...-DMACRO 以字符串"1"定义 MACRO 宏。 -DMACRO=DEFN 以字符串"DEFN"定义 MACRO 宏。 -E 只运行 C 预编译器。 -g 生成调试信息。

    1.3K20

    如何创建可在 Apple 自研芯片和基于 Intel 的 Mac 机上运行的应用程序

    如果您在 Xcode 工程中自定义了 Architectures 构建设置,请删除您的自定义项并改用 Standard Architectures 设置。...更新自定义 Makefile 结构列表 如果使用自定义脚本或 makefile 构建项目,则将 arm64 架构添加到适当的环境变量中。Xcode 使用 ARCHS 环境变量来定义当前的构建架构。...将变量添加到适当的环境变量后,编译代码并验证编译器是否创建了代码的 arm64 版本。要为项目创建通用二进制文件,请使用 lipo 工具将生成的可执行文件合并为单个可执行二进制文件。...对于在 Xcode 之外创建的 makefile,请使用 -target 选项将适当的架构值传递给编译器。以下示例显示了一个 makefile 一次编译一个源文件两次,每种架构一次。...#endif 有关条件编译宏的完整列表,请参见 /usr/include/TargetConditionals.h 头文件。

    2.3K30

    最基本的调试是NSLog及DEBUG预处理器宏

    好东西要在日志文件包括 日志记录允许您创建描述您的应用程序,你可以在你的闲暇之后分析操作的抄本。因此,你想在你的日志尽可能多的有用信息,这样更容易在你的应用程序运行期间让你真正看到正在发生的事情。...独特且易于查找文本模式 在每个日志声明,它是有用的,包括一些独特的并且容易找到的文本模式,所以如果你确定该日志语句有问题,可以很容易地通过你的源文件搜索和找到它的位置 变量和属性值 你在你的应用程序关键地方打印变量和属性可以验证这些值是否是允许的范围之内...除了用%@标记,任何在Printf使用的标记都可以在格式化字符串中使用。...在Xcode里面的DEBUG宏 在Xcode中DEBUG定义调试模式,预编译宏可以编译DEBUG可以让你DEBUG模式运行程序。...如果还没有定义,你可以手动的添加,预编译宏是区分大小写的。 ​ 图一在Xcode设置DEBUG预编译宏 ​ ?

    1.4K30

    ChatGPT Excel 大师

    如何在保持准确性的同时简化这个公式?” 3. 创建自定义函数 专业提示学习如何借助 ChatGPT 创建自定义函数,使您能够在不使用复杂公式的情况下执行特定计算。步骤 1....如何在 Excel 中创建和应用自定义图表模板,以确保所有我的图表和报告具有统一的外观,包括特定的颜色、字体和标签?” 75....访问开发人员选项卡并选择宏选项。2. 从列表中选择要运行或管理的宏。3. 选择适当的操作,如运行、编辑、删除,或为宏创建按钮或快捷键。...自定义宏按钮 专业提示学习如何使用 ChatGPT 的专业知识在 Excel 中自定义宏按钮,使您能够创建自定义按钮,为其分配宏,并将其放置在 Excel 功能区或工作表上以便轻松访问。步骤 1....ChatGPT 提示“我想创建引导用户并允许他们做出选择以触发特定操作的交互式对话框。如何在 Excel 中创建自定义对话框,捕获用户选择并根据他们的选择执行宏?” 100.

    10600

    自定义XCode的SwiftUI View模版(.xctemplate制作)

    关于自定义XCode内UIKit相关的文件模板,网上已有很多的教程,这里来介绍下对于SwiftUI View的自定义模板创建。...一、分析创建模板 1.下图为我们创建模板的展示,iOS下Source还是User Interface,User Interface下SwiftUI View还是我自定义的PSCustomScreen...(没有可以重启XCode再试试) image.png i.选择自定义模板创建文件,最终生成的.swift文件如下 image.png 三、分析下我们做了什么 //___FILEHEADER___...some View { ___FILEBASENAMEASIDENTIFIER___() } } #endif ___FILEBASENAMEASIDENTIFIER___是一个宏,...代表我们自己的命名 其他的宏: ___PROJECTNAME___:工程名 ___FILENAME___:包含后缀的文件名 ___FILEBASENAME___ : 文件名 ___FILEBASENAMEASIDENTIFIER

    31920
    领券