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

注释是否会从可执行文件Objective-C中剥离

注释是在代码中添加的用于解释和说明代码功能的文本。在Objective-C中,注释可以使用两种方式添加:单行注释和多行注释。

单行注释以双斜线(//)开头,可以在代码的任何位置添加。它们会被编译器忽略,不会包含在最终的可执行文件中。单行注释通常用于对代码的某一行或某一段进行简短的解释。

多行注释以斜线和星号(/)开头,以星号和斜线(/)结尾。多行注释可以跨越多行,并且可以包含大段的注释内容。与单行注释一样,多行注释也会被编译器忽略,不会包含在最终的可执行文件中。

注释的存在对于代码的可读性和维护性非常重要。它们可以帮助其他开发人员理解代码的意图和实现细节,以及提供一些额外的上下文信息。注释还可以用于标记代码中的重要部分或待办事项,以便后续的开发人员可以快速定位和处理。

总结起来,注释不会从可执行文件Objective-C中剥离,因为它们在编译过程中被完全忽略。注释的存在仅仅是为了提高代码的可读性和可维护性,对于最终的可执行文件没有任何影响。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云开发者平台:https://cloud.tencent.com/developer
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 人工智能平台(AI Lab):https://cloud.tencent.com/product/ai
  • 物联网开发平台(IoT Explorer):https://cloud.tencent.com/product/iotexplorer
  • 移动应用开发平台(MPS):https://cloud.tencent.com/product/mps
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙:https://cloud.tencent.com/solution/virtual-universe
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Xcode中和symbols有关的几个设置

编译器和汇编器生成地址0开始的代码和数据节。链接器通过把每个符号定义与一个存储器位置联系起来,然后修改所有对这些符号的引用,使得它们指向这个存储器位置,从而重定位这些节。...Objective-C不会为方法定义链接符号,只会为类定义链接符号。 可以在终端中用nm命令查看一个可重定位文件或可执行文件的符号表,其中加上-a参数可以显示包括调试符号在内的所有符号。...当Generate Debug Symbols设置为YES时,编译产生的.o文件大一些,当然最终生成的可执行文件也大一些。...这时构建失败。想想符号在重定位时的作用,如果构建的静态库真的能剥离所有符号,那么它也就没法被链接了。...Strip Debug Symbols During Copy [COPY_PHASE_STRIP] 网上有很多文章,以为Strip Debug Symbols During Copy开启的时候,app的调试符号会被剥离

1.9K30
  • Xcode other link flag参数详解和解决静态库冲突分析

    1.Xcode设置Other Link Flag 先猜一下这个参数,Other Link Flag 其他链接标志,字面上的意思来看,肯定代码链接的时候有关和链接器有关。...Objective-C does not define linker symbols for each function (or method, in Objective-C) - instead,...这样的话,如果静态库定义了已存在的一个类的分类,链接器就会以为这个类已经存在,不会把分类和核心类的代码合起来。这样的话,在最后的可执行文件,就会缺少分类里的代码,这样函数调用就失败了。...简单说来,加了这个参数后,链接器就会把静态库中所有的Objective-C类和分类都加载到最后的可执行文件,虽然这样可能因为加载了很多不必要的文件而导致可执行文件变大,但是这个参数很好地解决了我们所遇到的问题...-all_load让链接器把所有找到的目标文件都加载到可执行文件,但是千万不要随便使用这个参数!

    2.7K20

    class-dump 混淆加固、保护与优化原理

    进行逆向时,经常需要dump可执行文件的头文件,用以确定类信息和方法信息,为hook相关方法提供更加详细的数据.class-dump的主要用于检查存储在Mach O文件的Objective-C的运行时信息...安装class-dump是一个命令行工具,可以直接在class-dump官网进行下载解压.然后将可执行文件class-dump文件复制到对应的目录下即可在全局使用.由于Mac OS在10.11之后的版本...);-A:使用该选项显示方法实现的地址;--arch:可以通用二进制文件中选择指定的架构进行dump;-C:通过正则表达式匹配需要展示的类;-f:在方法名查找字符串;-H:在当前路径中生成头文件文件或者通过...,以进行测试;--list-arches:列出可执行文件支持的架构,然后退出;--sdk-ios:指定iOS SDK的版本;--sdk-root:指定完整的SDK全路径.常用命令以下命令:{excutableFileName...所以就要使用到混淆器,混淆器是把里面的代码变量等信息进行重命名,这样可读性变得非常差,接着, 到这里,我们完成了对代码的混淆,但是还没有进行加固,防止反编译,所以,请往下看 然后导入自己的包就可以了,

    16810

    iOS编译原理

    C和C++语句,它可以调用C函数,也可以通过C++对象访问方法; 4.OC与C++的比较 OC与C++都是C语言演变而来面向对象设计语言,也都兼容标准的C语言;但它们属于不同的面向对象学派; 两者最大的不同在于...,如定义的常量、函数等; 导入头文件:将#include包含的文件插入到该指令位置等; 清理注释:删除所有注释:// 、/* */等; 条件编译:处理#if、#ifdef,#endif等类似的条件编译;...> eof '' Loc= 结果分析: 每个被分割的源代码符号都被记录了位置,方便后续定位错误; 比如Loc= 就表示:'int'这个符号是源文件...main.m的第4行的第1个字符开始的; 2.语法分析(Semantic Analysis) 主要功能:对源代码符号进行分析,验证语法是否正确,最后生成AST语法树; 使用xcrun命令,查看语法分析结果...1.LLVM优化中间代码 中间代码IR进入后端,LLVM会对其进行优化: Optimization Level bitcode 2.生成汇编代码 LLVM对IR进行优化后,针对不同架构生成不同汇编代码

    1.6K20

    GCC编译过程记 原

    本篇博客主要总结使用GCC进行代码编译的方法以及源文件生成可执行文件的整个过程。     GCC完整的编译过程分为4个阶段,分别为预处理、编译、装载和链接。...·预编译处理     使用 -E 参数设置GCC只进行预编译处理,例如对上面的a.c源文件执行如下的GCC命令: gcc a.c -E > a.i 需要注意,GCC会将编译后的内容输出到a.i这个文件,...执行命令后,打开a.i文件,你会发现一个简单的C源文件被预处理成了500多行代码,你可以尝试在源文件添加宏定义,预处理后所有的宏定义都被直接替换了。    ...除了上面提到的几个参数外,可以使用-o参数直接生成目标文件,这个参数根据输入文件的后缀名进行处理,直接生成可执行文件,例如: gcc a.o -o a.out 其实使用.c为后缀名的C语言源文件也可以直接使用...out为后缀名的文件是可执行文件,在终端可以直接执行,如下: ?

    1.5K20

    手机APP安装包缩减方案

    2 安装包缩减方案 第一部分可以看出,二进制可执行文件和资源文件是缩包方案的重点,下面分别从资源文件瘦身和二进制可执行文件瘦身两个方面进行详述。 ?...那么通过otool命令逆向__TEXT__cstring段来获取二进制文件中所有的字符串常量,并检查这些字符串常量是否匹配安装包任意图片资源名(去除文件后缀,如@3x.jpg)。...二、可执行文件瘦身 删除无用类 随着代码工程越来越大和研发历史越来越长,在工程中会存在一些类并没有被使用,而Objective-C的动态性,编译器会把项目里所有OC源文件编进可执行文件里,那么删除这些无用类文件必定能减少二进制文件的大小...删除无用方法 由于Objective-C的动态性,它可以通过类名和方法名获取这个类和方法进行调用,所以编译器会把项目里所有OC源文件编进可执行文件里,哪怕该方法没有被使用到,删除这些无用方法必定能减少二进制文件的大小...具体方法为: ① 用脚本linkmap文件解析二进制文件中所有的类方法(通过解析text代码段内容) ② 通过otool命令逆向__DATA.

    1.4K60

    .NET平台系列18 .NET5的超强优势

    创建单个可执行文件   在 .NET Core 3.0 ,可以编译到单个可执行文件,但该可执行文件实际上是运行时所需执行的所有文件的压缩版本。...在执行该文件时,它首先将自己展开到一个临时目录,然后包含所有文件的目录执行应用程序的入口点。相反,.NET 5 将创建一个实实在在的、可直接就地执行的单个可执行文件。...互操作性   .NET 5 的另一个显著特性是与 Java 和 Objective-C(包括 Swift)源代码的互操作性。...例如,你将能够在 csproj 文件包含 jar 文件,并且能够直接 .NET 代码调用 Java 或 Objective-C 代码。...(遗憾的是,对 Objective-C 的支持可能会比 Java 晚)。 需要注意的是,.NET5 和 Java/Objective-C 之间的互操作性只针对进程内通信。

    1.3K10

    9个基本的GNU binutils 工具【Linux-Command-line】

    .png 在a.out上运行file命令表明它确实是ELF可执行文件: 屏幕快照 2019-11-19 下午6.17.40.png 运行可执行文件,查看它是否如源代码所示: 屏幕快照 2019-11-...屏幕快照 2019-11-20 下午12.37.48.png 另一方面,在a.out(可执行文件)上运行strings,显示链接阶段二进制文件包含的其他信息: 屏幕快照 2019-11-20 下午12.39.47...objdump:显示目标文件的信息 可以二进制文件中转出机器语言指令的另一个binutils工具称为“objdump”。 使用“-d”选项,该选项可从二进制文件反汇编所有汇编指令。...它是否与你在上面的mov指令中看到的地址匹配? 是的,的确匹配。 strip:目标文件弃置符号 该命令通常用于将二进制文件运送给客户之前,以减小二进制文件的大小。...剥离二进制文件后,此小程序的大小以前的8440字节减小到6296。

    4.3K50

    Swift进阶一:Swift简介

    Objective-C,NSNumber、NSString,以及集合类(字典、数组、set)都是指针类型。...而在Objective-C,枚举则鸡肋很多,它只是一个标记值而已。 5,泛型 Swift是支持泛型的,也支持泛型的类型约束等特性。 Objective-C则没有泛型的概念。...同时,Swift的protocol还可以用于值类型,比如结构体和枚举。 Objective-C的协议相对于Swift,则显得寒酸很多。...如果要放弃掉optional的话,也就是说每个协议方法都必须要实现,那么当这个协议里面有很多个协议方法的时候,我们在每一个遵循该协议的类里面都要事先所有的协议方法,无论你是否会用到该协议方法。...在Objective-C,函数仍然是次等公民,我们需要对其进行selector的封装或者利用block来实现Swift类似的效果。

    2.8K20

    【工具】这个神器可以提取你代码的关键信息生成技术文档

    这里覆盖了C语言标准库的所有函数,给出了每个函数的介绍并且都给出了具体的用法示例,比如: ? ? 只不过都是英文的说明,可见英文的重要性。...id=21138 方法二:百度云盘下载 链接:https://pan.baidu.com/s/1gsJxkGsoO0ncy0GGM6PyQw 提取码:3754 下载的都是.exe格式的可执行文件...三、Doxygen根据代码生成.chm的机制 Doxygen可以根据固定格式的代码注释生成相对应的.chm格式的手册。...支持的语言有好多种,如C/C++/C#/Objective-C/PHP/Java等。这里主要是分享C语言,Doxygen可以识别的固定格式注释有以下几种: ? ? ? ? ? ? ?...(8)设置是否在.chm中生成源码以供预览 ? (9)设置HTML选项 ? (10)设置Dot选项 ? ? (11)运行生成.chm文件 ? (12)保存工程文件 ?

    1.7K20

    Swift 周报 第十九期

    12 月 12 日,参与新一周的 Ask Apple 活动 欢迎继续参与新一周激动人心的 Ask Apple,与 Apple 专家直接交流沟通,获取关于最新技术和设计问题的解答;或者只是随意听听,对话中学习...建议的解决方案: 添加一个新的 @globalConstructor 属性,该属性可以添加到顶级函数,以便在启动可执行文件或加载包含该函数的动态库时自动调用它们。...[12] 讨论 Read/modify, yield, 和 non-escaping closures[13] 议案 Swift Objective-C 实现[14]我们提出了 @objc 类的替代方案...生成的类将在 Swift 实现,但与 Objective-C 类没有区别,完全支持 ObjC 子类化和运行时技巧。...使用 @objcImplementation,您可以像编写 Objective-C 类一样手写头文件,但不是在 Objective-C 实现方法和属性,而是在 Swift 实现它们。

    1.5K30

    【Linux】gcc&g++与 的美妙邂逅(5)

    其实在我们的系统,已经提前有了C++或者其他语言开发相关的头文件,库文件; 也就是说,C++开发环境不仅仅指的是vscode,gcc,g++,更为重要的是,系统是否含有语言本身的头文件和库文件 当我们安装...vscode等编译器时,我们会发现,其让我们选择对应的开发包,其中就包括C的头文件和库文件 二.函数库 1.库的基础知识 引入: 我们的C程序,并没有定义“printf”的函数实现,且在预编译包含的...2.编译(生成汇编) 在这个阶段,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查 无误后,gcc 把代码翻译成汇编语言。...【动态库/动态链接】与【静态库/静态链接】 动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件,而是在程序执行时由运行时 链接【文件加载库】,这样可以节省系统的开销。...gcc hello.o –o hello 静态库是指编译链接时,把库文件的代码全部加入到【可执行文件,因此生成的文件比较大,但在运行时也 就不再需要库文件了。

    18010

    iOS底层原理(二):运行时研究(一)

    理解Objective-C的运行时机制可以帮我们更好的了解这个语言,适当的时候还能对语言进行扩展,系统层面解决项目中的一些设计或技术问题。...我们现在用的采用Objective-C 2.0的是现行(Modern)版的Runtime系统,只能运行在iOS和macOS 10.5之后的64位程序。...而较macOS老的32位程序仍采用Objective-C 1的(早期)Legacy的版本Runtime系统- 。...高级编程语言想要成为可执行文件需要先编译为汇编语言再汇编为机器语言,机器语言也是计算机能够识别的唯一语言,但是OC并不能直接编译为汇编语言,要先而是转写为纯C语言再进行编译状语从句:汇编的操作,OC到...数据结构获取类和类定义的信息和协议定义的信息,包含了在“Objective-C编程语言”对“定义类和协议”谈论的类和协议的对象,以及方法选择,实例变量模版,和其他葱源代码中提取出来的信息。

    33040
    领券