HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了为什么Xcode 8(iOS 10)在控制台中打印[LogMessageLogging]大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
为什么 Xcode 8(iOS 10)打印[LogmessageLogging]< private>在控制台中,当我调用地图视图时?

任何人都可以提出一些建议吗?

解决方法

>资料来源:https://developer.apple.com/reference/os/1891852-logging
> WWDC视频:https://developer.apple.com/videos/play/wwdc2016/721/?time=714

示例(ObjC)

os_log_t log = os_log_create("com.example.my-subsystem","test");

const char *staticString = "I am static String!";
const char *dynamicString = [[NSString StringWithFormat:@"I am %@!",@"dynamic String"]
                             cStringUsingEncoding:NSUTF8StringEncoding];

os_log(log,"message: %s",staticString);
os_log(log,dynamicString);
os_log(log,"message: %{public}s",dynamicString);

// Output
// [test] message: I am static String!
// [test] message: <private>
// [test] message: I am dynamic String!

示例(Swift):

目前在Swift(https://openradar.appspot.com/radar?id=6068967584038912)中记录字符串似乎已被破坏,因此我们需要手动将C函数桥接到Swift:

更新01.雷达28599032是修复程序,不适用于Xcode 10.

// File: os_log_rdar28599032.h
#import <Foundation/Foundation.h>
#import <os/log.h>

void log_private(os_log_t,os_log_type_t,NSString *);
void log_public(os_log_t,NSString *);


// File: os_log_rdar28599032.m
#import "os_log_rdar28599032.h"

void log_private(os_log_t log,os_log_type_t type,NSString * messagE) {
   os_log_with_type(log,type,"%s",[message cStringUsingEncoding:NSUTF8StringEncoding]);
}

void log_public(os_log_t log,"%{public}s",[message cStringUsingEncoding:NSUTF8StringEncoding]);
}


// File: ViewController.swift
import Cocoa
import os.log
import os.activity

class ViewController: NSViewController {

   static let log = OSLog(subsystem: "com.example.my-subsystem",category: "test")
   typealias SelfClass = ViewController

   override func viewDidLoad() {
      super.viewDidLoad()
      log_private(SelfClass.log,.fault,"I am dynamic \("String")!")
      log_public(SelfClass.log,"I am dynamic \("String")!")
      log_private(SelfClass.log,#filE)
      log_public(SelfClass.log,#filE)
   }

}

// Output
// [test] <private>
// [test] I am dynamic String!
// [test] <private>
// [test] /[REDACTED]/ViewController.swift

大佬总结

以上是大佬教程为你收集整理的为什么Xcode 8(iOS 10)在控制台中打印[LogMessageLogging]全部内容,希望文章能够帮你解决为什么Xcode 8(iOS 10)在控制台中打印[LogMessageLogging]所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。