- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有两个类
都符合相同的协议(protocol)
:
class A {}
class B {}
protocol P {}
extension A: P {}
extension B: P {}
此外,我还有一个回调闭包,它的主要参数是传递给某些 C API 函数的 UnsafeMutableRawPointer
:
SomeCFunction(…, …, { (pointerToEitherAOrB: UnsafeMutableRawPointer) in
// Cast pointerToEitherAOrB to either A or B.
})
我不知道指针指的是两个类
中的哪一个。是否仍然可以将此指针转换为正确的类型?
我的直觉告诉我这是不可能的,我需要使用 super
class
。
最佳答案
使用公共(public)父类(super class)会是更简洁的方法,但首先转换为 AnyObject
似乎也可行:
let aOrB = Unmanaged<AnyObject>.fromOpaque(pointerToEitherAOrB).takeUnretainedValue()
switch aOrB {
case let a as A:
print(a)
case let b as B:
print(b)
default:
print("Something else")
}
关于swift - 将 UnsafeMutableRawPointer 转换为多种类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54768719/
自 Xcode 11.4 起,我收到警告消息“‘UnsafeMutableRawPointer’的初始化导致悬空指针” 对于以下代码,我将 SIMD4 从 MTLTexture 读取到数组中: let
我可能会以错误的方式解决这个问题,因为我过去没有做过很多指针运算(甚至可能没有必要)。 但是,在 Swift 中给定一个指针(UnsafeMutableRawPointer 类型),我想获得最接近(向
我正在使用 UnsafeMutableRawPointer 分配内存: let p = UnsafeMutableRawPointer.allocate(bytes: 1000, alignedTo:
如果我想获得一个变量的unsafemutablerawpointer。然而,在不创建副本或缓冲区的情况下,最好/有效的方法是什么? 下面的例子有效! var number:UInt = 5 let n
Objective-C 代码运行良好。我不知道如何将指针迁移到 Swift。 代码 Objective-C to Swift Error in * to UnsafeMutableRawPointer
我似乎无法理解在 Swift 中手动访问图像像素数据背后的方法。我正在尝试从 CGImage 创建图像蒙版,稍后可以在单独的图像上使用。我想识别特定值的所有像素并将图像中的所有其他内容转换为黑/白或
使用 Swift 3,我得到了这个,没有任何错误: private var SessionRunningContext = 0 func addObservers() { self.sessio
我有两个类都符合相同的协议(protocol): class A {} class B {} protocol P {} extension A: P {} extension B: P {} 此外,
我正在尝试获取 UnsafeMutableRawPointer 指向的地址,但我无法这样做。我也是 Swift 的新手,所以我可能会遗漏某些东西或做错了。我最好将原始值转换为 CChar。 最佳答案
我有一个 Metal 纹理,我想通过将其设为 float4 数组来从 Swift 访问它的数据(这样我就可以访问每个像素的 4 个颜色分量)。 我发现了 MTLTexture 的这个方法: getBy
如何访问由 C API(Core Audio 等)传递给 Swift 函数的 UnsafeMutableRawPointer(Swift 3 中的新功能)指向的内存之外的字节(或 Int16、 flo
以下是Swift 3.0的作品: override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [N
我在更新到 swift 3.0 时遇到了一些问题。我有以下代码: // Retrieve the Device GUID let device = UIDevice.current
我有一个 UnsafeMutableRawPointer 实例,想检索它的整数表示形式。我正在尝试使用以下代码: let pointer : UnsafeMutableRawPointer? = ad
我知道如何使用以下方法将内存从数组复制到从索引 0 开始的 UnsafeMutableRawPointer: mutableRawPointer.copyMemory(from: bytes, byt
在 Core Audio 框架中,用户数据可以通过 UnsafeMutableRawPointer? 传递到回调中。我想知道如何通过此 UnsafeMutableRawPointer? 传递结构通过引
我正在尝试转换此源代码: BluetoothDeviceAddress *deviceAddress = malloc(sizeof(BluetoothDeviceAddress)); Swift,这
我只是将我的 iOS 应用程序的代码更新为 Swift 3,这行代码让我很困惑: let dataProvider:CGDataProvider? = CGDataProviderCreateWith
我正在尝试将 Objective-C 源代码转换为 Swift。 在 Objective-C 中,下面的代码 myView = (__bridge UIView *)([SmartPlayerSDK
我正在尝试将 Objective C 代码转换为 swift。 UInt8* data = calloc(bytesPerRow, height); 当我快速转换它时,它返回“UnsafeMutabl
我是一名优秀的程序员,十分优秀!