小编Osk*_*kar的帖子

将 SwiftUI 视图转换为 NSImage

如何创建 SwiftUIView扩展来返回NSImage?我已经看到如何在 iOS 上使用它来完成此操作UIGraphicsImageRenderer,但似乎没有 macOS 等效项。

macos swift swiftui

10
推荐指数
1
解决办法
1797
查看次数

拖放在Cocoa中的Dock图标 - 介绍文件关联

我在我的应用程序中实现了拖放功能.该应用程序让你打开.kext文件.

我已经使用-(void)application:openFiles:了以及设置文档类型: 文档类型设置

一切正常,我的应用程序可以检测到何时丢弃kext.但是,当删除Kext时,我的Mac上的所有kexts都会将图标更改为Folder icon!我想这与我的应用程序搞乱文件关联有关.

有没有办法解决?

cocoa icons kernel-extension

7
推荐指数
1
解决办法
756
查看次数

使用NSTask启动可执行文件 - 沙盒问题?

我有一个Mac OSX应用程序,它启动位于/ Contents/Resources中的可执行文件.该应用程序不打算在App Store上发布,因此我没有打开沙箱.

发布代码:

toolPath = [[[NSBundle mainBundle] pathForResource:@"myexecutable" ofType:@""] copy];
task = [[NSTask alloc] init];
[task setLaunchPath: toolPath];
pipe = [[NSPipe alloc] init];
[task setArguments:[NSArray arrayWithObjects:@"-someArg", someVariable, nil]];
file = [[NSFileHandle alloc] initWithFileDescriptor:[pipe fileHandleForReading].fileDescriptor];
[task setStandardOutput: stderrPipe];
[task launch];
Run Code Online (Sandbox Code Playgroud)

问题是 - 在Xcode中运行时一切正常.将应用程序导出到桌面并运行它时,它也可以正常工作.

但是,如果我将应用程序压缩,将其上传到网络服务器,然后在同一台计算机上下载(或将其下载到另一台Mac),则该任务不再启动!我在系统控制台或任何东西都没有错误.

我研究了一些关于这个问题,并发现OSX将新的应用标记为"隔离"特殊许可权.所以我调查了下载的应用程序和导出的应用程序之间的区别:

从Xcode导出我的应用程序后可执行文件的权限:

-rwxr-xr-x  1 Username  staff   65724 21 Jul 16:31 executableName
Run Code Online (Sandbox Code Playgroud)

此时,应用程序正常工作,可执行文件从应用程序内的按钮启动.

压缩应用程序,上传到服务器,下载,解压缩,打开应用程序并接受"此应用程序已从Internet下载"对话框:

-rwxr-xr-x  1 Username  staff   65724 21 Jul 16:31 executableName
    com.apple.quarantine        26 
Run Code Online (Sandbox Code Playgroud)

此时我在应用程序中按下按钮时没有任何反应.

如果我然后xattr -rd com.apple.quarantine在整个应用程序上运行,则会删除隔离通知:

-rwxr-xr-x  1 Username  staff   65724 …
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c

7
推荐指数
1
解决办法
2984
查看次数

在Swift 3中使用withMemoryRebound的问题

我有一个以前UnsafeMutablePointer用来调用C函数的应用程序,如下所示:

    var size     = HOST_BASIC_INFO_COUNT
    let hostInfo = host_basic_info_t.allocate(capacity: 1)
    let result = host_info(machHost, HOST_BASIC_INFO,
                                     UnsafeMutablePointer(hostInfo), &size)
Run Code Online (Sandbox Code Playgroud)

自从迁移到Swift 3,Xcode Beta 6后,系统会提示您使用withMemoryRebound.问题是我不明白如何在这种情况下使用它,并且还没有它的文档或示例代码.我的方法:

    var size     = HOST_BASIC_INFO_COUNT
    let hostInfo = host_basic_info_t.allocate(capacity: 1)
    let temp = hostInfo.withMemoryRebound(to: host_info_t!.self, capacity: Int(size)) {
        UnsafeBufferPointer(start: $0, count: Int(size))
    }
    let result = host_statistics(machHost,
                                 HOST_BASIC_INFO,
                                 temp.baseAddress?.pointee,
                                 &size)
Run Code Online (Sandbox Code Playgroud)

只是与Bad Access崩溃.什么是正确的使用方法withMemoryRebound

cocoa pointers swift

4
推荐指数
1
解决办法
2754
查看次数

标签 统计

cocoa ×3

swift ×2

icons ×1

kernel-extension ×1

macos ×1

objective-c ×1

pointers ×1

swiftui ×1