Xamarin.iOS 发布版本中的 Console.WriteLine 调用会发生什么情况?

2024-01-18

使用 XCode 开发 iOS 应用程序时,可以使用 NSLog 调用将信息写入控制台以进行调试。在 Xamarin.iOS 中,可以使用 Console.WriteLine 完成相同的操作。

当运行应用程序的发布版本时,如果没有附加调试器,这些调用没有任何作用。所以我想到用预处理器指令排除它们:

#if DEBUG
Console.WriteLine("foo");
#endif

因此,这些调用甚至不存在于发布版本中。我很欣赏这可能是微观优化 - 但我很好奇 Xamairn 是否已经这样做了,从而使这变得不必要?


ConsoleiOS 发布版本中不会删除输出。

仅供参考:Xcode 不会“自动”删除NSLog or print来自 Obj-C/Swift“发布”代码。 (如果需要的话,您通常会定义一个全局预处理器宏来将它们全部删除......)

您的选择有很多...包括:

  • DEBUG正如您在问题中所示的预处理器。

  • Use System.Diagnostic.Debug.WriteLine:

由于应用了 [Conditional("DEBUG")] 属性,任何对 Debug.* 的调用都将被编译器删除。

  • 创建您自己的“Logger”类作为包装器stdout作家和[Conditional("DEBUG")] it

  • Use Fody并重新编织程序集以删除/NOP/重定向WriteLine

    • 我这样做是为了将调用重定向到内部日志,并在发生崩溃或用户统计请求时,将此日志转发到我们的崩溃报告服务器。
  • ETC, .....

参考: Xamarin 的NSLogWriter https://github.com/xamarin/xamarin-macios/blob/2edb2ae4f5bb371a7006731987717c01f8725420/src/Foundation/NSLogWriter.cs助手类

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xamarin.iOS 发布版本中的 Console.WriteLine 调用会发生什么情况? 的相关文章

  • 添加到 Xcode App 时,Bazel 框架抛出“无法检查应用程序包”

    我正在使用 Bazel 构建基于 MediaPipe 的人脸识别库 我正在使用apple xc框架 https github com bazelbuild rules apple blob master doc rules apple md
  • NSData 不接受有效的 base64 编码字符串

    我正在 iOS 7 客户端实现 JSON Web Token 身份验证 效果很好 我的应用程序接收令牌 并可以使用它们对我的服务器进行经过身份验证的调用 现在 我希望我的客户端代码检查令牌的过期日期 以便它知道何时重新进行身份验证 检查 J
  • 错误 ITMS-90207 Apple Store 提交

    当我在模拟器或设备上运行我的应用程序时 用于调试和发布构建配置 它可以完美运行 但是当我尝试将我的应用程序提交到 Apple Store 时 出现以下错误 错误 ITMS 90207 捆绑包无效 APPNAME app 处的捆绑包确实 不包
  • 同时使用多个控制台

    是否有捷径可寻 我现在仅使用控制台测试我的网络应用程序 最好的办法是从一个项目中拥有多个控制台 然后按一下 立即调试 菜单项 我可以像过去一样使用多个项目 但这似乎很笨拙 理想情况下 我可以启动多个控制台实例 从同一线程运行很好 并且让它们
  • GM 发布 Xcode 6 编译

    我刚刚下载了 Xcode 6 的 GM 版本 但无法编译并出现以下错误 Command Applications Xcode app Contents Developer Toolchains XcodeDefault xctoolchai
  • 在横向模式下向 UIScrollView 添加子视图

    我有一个以横向模式启动的视图控制器 其中有一个 UIScrollView 我尝试创建子视图并将它们添加到 UIScrollView 但视图的框架大小都是纵向大小 这是我的代码 void viewDidLoad super viewDidLo
  • 如何获取核心数据中现有实体(表)的列表

    如何获取核心数据中特定模式 托管对象模型 的现有实体 表 列表 我刚刚开始实施核心数据概念并坚持这些要点 就像是 SELECT COUNT FROM information schema tables WHERE table schema
  • Xcode 6 仪器冻结

    在 Xcode 6 Instruments 中分析我的 iOS 8 应用程序将运行该应用程序约 5 秒 然后冻结 此后探查器仍将运行 但应用程序已冻结且无法使用 发生在设备和模拟器上 无论我使用哪个分析器 计时器 泄漏等 从调试器或临时构建
  • 只有根级导航目的地对于具有同质路径的导航堆栈有效

    我正在尝试整合NavigationStack在我的 SwiftUI 应用程序中 我有四个看法 CealUIApp OnBoardingView UserTypeView and RegisterView 我想从OnBoardingView
  • 方向改变时重新定位控件

    我知道自动布局可用于在方向改变时使尺寸和位置保持一致 当方向改变时 是否可以完全改变布局 例如 请查看下面的纵向模式下简单登录屏幕的线框 现在 如果我旋转设备 我想完全重新定位控件 这种事情可以用自动布局来完成吗 如果没有 我该怎么办 谢谢
  • -all_load 其他链接器标志导致第 3 方框架中的重复符号错误

    我有一个用于内部应用程序的静态库 其中包含一些常见的实用程序代码 从以前的 SO 帖子中 我发现为了在运行时加载静态库中的类别 我需要包括 all load ObjC在 构建设置 中的 其他链接器标志 字段中 但是 对于我也在使用的闭源第三
  • 调试VBA、定位问题及排查方法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有哪些方法调试VBA代码 具体来说 单步执行代码 断点和停止命令 TheDebug command 当地人和观察窗 调用栈 调试 VB
  • 为什么在尝试编译此代码时会收到错误“错误:未知类型名称'虚拟'”?

    Code struct IRenderingEngine virtual void Initialize int width int height 0 virtual void Render const 0 virtual void Upd
  • 如何以编程方式设置设备(UI)方向?

    希望屏幕 UI 上的所有内容都能够从横向左向右旋转 反之亦然 我该怎么做呢 这是私人的吗 我知道 BOOL shouldAutorotateToInterfaceOrientation UIInterfaceOrientation inte
  • NSCalendar 返回明年第一周上周一的错误日期

    我使用下面的代码使用随机日期来计算上周一 哪个工作文件但我的代码在明年日期中断 下面是相同的代码 NSDate date NSDate dateWithTimeIntervalSince1970 1483620311 228 NSLog c
  • 无法验证包:721772200.itmsp

    我写这篇文章是因为我有一个严重的问题 我在cartoonsmart 网站上购买了Commander Cool 游戏 然而 一个严重的问题发生了 iTune Connect 验证无法接受该申请 我尝试从两个不同的开发者帐户发布它 但错误仍然发
  • 如何在 iOS 中通过 Twitter API 获取用户电子邮件地址?

    我尝试了多个 SDK 但无法从任何资源获取电子邮件 ID 我努力了FHSTwitterEngine为此目的 但我没有得到解决方案 FHSTwitterEngine twitterEngine FHSTwitterEngine sharedE
  • UIStackView分布均匀填充

    所以 我有一个UIStackView其中包含四 4 UIViews 如果我删除其中一 1 个UIViews 其他三 3 个将填满UIStackView 我的问题 如何添加最大高度UIView这样它就不会填满整个空间UIStackView即使
  • 如何正确创建迦太基 cartfile?

    我正在研究购物车文件 迫不及待地想 简单地创建一个购物车文件 就像所有说明所说的那样 只是 如何 简单地 创建一个 Cartfile 我创建了一个纯文本文档 将其命名为 cartfile 并在其中复制了一些依赖项 Ran carthage
  • 使用 NSString 进行 UTF8 解码

    我是 Objective C 新手 尝试使用以下示例将格式错误的 UTF8 编码 NSString 转换为格式良好的字符串苹果文档 http developer apple com library mac documentation Coc

随机推荐

  • 为什么将 VPC 与 AWS Lambda 或 AWS DynamoDB 结合使用?

    我读到很多人都在努力将 Lambda 连接到 DynamoDB 因为他们生活在 VPC 中 但我的问题是 为什么要使用 VPC VPC 旨在保护直接连接到外部世界 又称互联网 的服务 例如 像 RDS 这样的东西 它们只是坐以待毙 等待任何
  • 类的成员字段顺序是否“稳定”?

    考虑到 c 或 c 11 我有一些数据数组 其中包含 2 N 整数 代表 N 对 对于每个偶数 i 0 2 4 6 2 N 它认为 data i data i 1 形成这样一个对 现在我想要一种简单的方法来访问这些对 而不需要编写如下循环
  • 在 ASP.NET 中将文本下载为文件

    我正在尝试将屏幕上的一些文本输出下载为文本文件 以下是代码 它在某些页面上起作用 而在其他页面上根本不起作用 谁能建议这里出了什么问题吗 protected void Button18 Click object sender EventAr
  • UI 测试中通用角色名称不完整

    我正在使用 Xcode 7 的新功能 UI 测试 记录交互后 Xcode自动生成代码 void testDoubleTapToolBarItem XCUIApplication alloc init tabBars buttons U517
  • bash/expect 脚本中的错误处理

    下面粘贴的是一个 bash 脚本 结合了 Expect 代码 其中 通过 ssh 连接到远程主机 收集文件并准备 tgz 文件 将 tgz 文件从远程主机复制到本地计算机 再次通过 ssh 连接到远程主机并删除之前创建的 tgz 文件 最后
  • 我必须在 javascript 函数中返回一些东西吗?

    在 JavaScript 函数中 我需要返回某些内容 true 或 false 吗 到目前为止 我编写的所有没有返回任何内容的函数都工作得很好 我只是好奇 不 Javascript 函数不需要返回值 如果你调用的函数不return一个值 你
  • 使用 css 或 javascript 将视频放置为 100% 高度和 100% 宽度

    我想放置一个 100 宽度和 100 高度的 html5 视频 当然带有 video 标签 该视频将在后台播放 这是一个带有图像的示例 我想要与视频完全相同的示例 我只是不知道如何做到这一点 image background image u
  • 对 Web 服务调用中的会话进行只读访问?

    我们有一个 net asmx Web 服务 它从 javascript 调用 使用 ASP Net AJAX 并且需要访问会话 WebMethod true public string DoSomethingOnTheServer 我们遇到
  • google_drive 和 google-api-client 中的法拉第冲突

    我希望能够使用 google api client gem 进行服务到服务身份验证 并使用 google drive api 访问电子表格 不幸的是 这些宝石似乎由于依赖项中需要不同版本的法拉第而发生冲突 有人知道如何解决这个问题吗 如果首
  • 当 closeonselect 为 false 时关闭 select2

    当您点击离开时 是否有更好的方法来关闭 select2 我把它关闭了 document click function event if event target hasClass select2 selection rendered eve
  • 使用 sip.js 录制 SIP 通话中的麦克风和音频

    晚上好 堆栈溢出 我的一个项目确实需要帮助 我在该项目中使用 sip js 和 VoIP 来拨打电话号码 The Goal 我想允许用户录制音频和麦克风并将数据保存在服务器上 以 base64 编码或作为文件 因此 对话结束后我可以再次听到
  • kotlin.UninitializedPropertyAccessException:lateinit 属性首选项尚未初始化

    我在多个项目中使用了共享首选项的代码 它工作正常 但现在当我在另一个项目中应用相同的代码时 它停止工作 以下是错误 kotlin UninitializedPropertyAccessException lateinit 属性首选项尚未初始
  • LLVM - 如何将 AST 转换为 IR

    我知道一个AST解析器生成的数据用于在前端生成 IR 我想知道如何解析 AST 然后将其转换为 IR 问题汇编或位码 AST 是一棵树 从 AST 到 IR 的转换涉及哪些步骤 发射LLVM IR from Clang ASTs发生在 Cl
  • 绘制大规模的networkx图:数组太大

    我正在尝试绘制带有加权边的网络图 但现在我遇到了一些困难 正如标题所示 这张图确实很大 节点数量 103362 边数 1419671 当我尝试使用以下代码绘制该图时 pos nx spring layout G nx draw G node
  • 子图是重叠的轴标签[重复]

    这个问题在这里已经有答案了 我在 python 中创建了一个包含多个子图的图形 我还在图中的一些轴上添加了各种轴标签 举些例子 plt xlabel Phase circ fontsize 10 但我注意到 当生成最终图形时 其他子图可以重
  • 如何在所有ajax调用中向URL添加参数?

    我有一个使用 jQuery 的 Backbone 应用程序 并且想要附加一个sessionId所有 ajax 调用的 URL 参数 我怎样才能在 Backbone 或 jQuery 中做到这一点 也许以全局方式而不重写 Backbone S
  • 使用 Angular 2 生成 Docx 文件

    我正在使用 angular2 我想使用对象生成 docx 文件 我希望我的 docx 文件包含页脚 页眉 表格等 我能想到的最佳解决方案是首先创建一个 HTML 文件 然后将其转换为 docx 文件 但这似乎不对 有没有更简单 更方便的方法
  • 如何在 jasmine 规范中使用 $promise.then 模拟 AngularJS $resource

    I use resource设置一些API调用 在测试时我采用了注入的通用方法 q然后做 mockMyService doSomethingAsync andReturnValue q when successResponse 这已经很有效
  • xunit 以编程方式添加新测试/“[事实]”?

    我们有一个充满 JSON 文本文件的文件夹 需要将其设置为单个 URI 目前 这一切都是通过单个 xUnit Fact 完成的 如下所示 Fact public void TestAllCases PileOfTests pot new P
  • Xamarin.iOS 发布版本中的 Console.WriteLine 调用会发生什么情况?

    使用 XCode 开发 iOS 应用程序时 可以使用 NSLog 调用将信息写入控制台以进行调试 在 Xamarin iOS 中 可以使用 Console WriteLine 完成相同的操作 当运行应用程序的发布版本时 如果没有附加调试器