gpt4 book ai didi

ios - 在 Swift 中使用 sysctlbyname()

转载 作者:IT王子 更新时间:2023-10-29 05:16:19 25 4
gpt4 key购买 nike

我正在使用 this Gist 中的代码确定我的应用正在运行的 iOS 设备(例如 iPhone5,1):

- (NSString *)platform
{
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = malloc(size);
sysctlbyname("hw.machine", machine, &size, NULL, 0);
NSString *platform = [NSString stringWithUTF8String:machine];
free(machine);
return platform;
}

The Swift documentation表明 C 数据类型得到了很好的支持,但它没有说明任何关于 C 函数的信息。是否有一种纯粹的 Swift 方法来检索机器标识符,或者我是否必须为此桥接到 Objective-C?

最佳答案

您可以在 Swift 中执行相同的操作(为简洁起见省略了错误检查):

func platform() -> String {
var size : Int = 0 // as Ben Stahl noticed in his answer
sysctlbyname("hw.machine", nil, &size, nil, 0)
var machine = [CChar](count: size, repeatedValue: 0)
sysctlbyname("hw.machine", &machine, &size, nil, 0)
return String.fromCString(machine)!
}

Swift 3 更新:

func platform() -> String {
var size = 0
sysctlbyname("hw.machine", nil, &size, nil, 0)
var machine = [CChar](repeating: 0, count: size)
sysctlbyname("hw.machine", &machine, &size, nil, 0)
return String(cString: machine)
}

关于ios - 在 Swift 中使用 sysctlbyname(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25467082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com