- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在使用 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/
我正在使用 this Gist 中的代码确定我的应用正在运行的 iOS 设备(例如 iPhone5,1): - (NSString *)platform { size_t size;
我正在尝试使用 sysctlbyname() 在 iphone 中获取 TCP 开放端口列表。 sysctlbyname(const char *name, void *oldp, size_t *
我让这段代码在 swift 1.1 中运行不确定如何修复它 var deviceModelIdentifier: String { var size : UInt = 0 // Swift 1
我知道在 SQLite 中更改 stringWithCString 时如何处理这个问题...您只需 stringWithUTF8String 即可。这与 sysctlbyname 返回的 char *
在 WWDC 2015 session “703 隐私和您的应用”之后,使用 sysctl 进行了更改。现在我们将无法再调用 kern.proc、kern.procargs、kern.procargs
我导入: #import #import 当我在 dispatch_once 之外使用函数 sysctlbyname("hw.machine", NULL, &size, NULL, 0); 时,
我想在我的 iPhone 上获取 tcp 连接列表。我在 上得到了以下代码 How to get tcp/udp opening port list on iphone by objective-c?
我是一名优秀的程序员,十分优秀!