【问题标题】:Detect if iPhone device is attached to machine for debug purposes检测 iPhone 设备是否连接到机器以进行调试
【发布时间】:2011-10-08 08:39:18
【问题描述】:

简单地说,我想在连接设备时打印到控制台,并在未连接设备时打印到设备。我从不使用模拟器,但希望有一种类似于下面的守卫。除了检测我是否在使用模拟器之外,我想自动检测设备是否已连接。

无论如何我们可以做到这一点?

谢谢!

#if TARGET_IPHONE_SIMULATOR == 0
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *logPath = [documentsDirectory stringByAppendingPathComponent:@"console.log"];
freopen([logPath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr);
#endif

【问题讨论】:

    标签: iphone objective-c xcode cocoa-touch debugging


    【解决方案1】:

    打印到控制台与打印到设备是什么意思? 当您使用普通的 NSLog 时,它会在设备连接时显示在控制台上,而在未连接时显示在设备日志(您可以从 Xcode 管理器中提取)。

    您能否更具体地说明您要做什么?

    更新

    这是你看到日志的地方。

    在管理器上,您有一个名为“设备”的东西。展开它,然后选择“控制台”。控制台会非常混乱,因为它还包含所有应用程序的日志和系统内置日志。不过,您可以按您的应用名称过滤它们。

    【讨论】:

    • 如果你说的是对的,那么你已经回答了我的问题。我在哪里可以找到 Xcode 管理器中的设备日志?我看了一眼,什么也没看到。
    • 在 Xcode4 管理器中,它位于设备下方左侧的“库”列中。它在每个设备“Provisioning Profiles”、“Applications”、“Console”、“Device Logs”和“Screenshots”下显示 5 行。
    • 我可以看到设备日志,但在我看来它们就像崩溃日志。我没有看到任何 NSLog 语句。当设备未连接时,您确定 NSLog 在那里打印吗?
    • 不是设备日志,而是控制台选项卡。我用截图更新了我的答案。希望对您有所帮助。
    【解决方案2】:

    在我的情况下,如果没有附加,我想显示 UIAlertViews,否则打印到 NSLog。 问题是是否有一种方法可以添加 #if ... #endif 指令,以便在附加/未附加时进行调试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-04
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多