Here:
from objc_util import * from ctypes import * import ctypes lb = 24 def printHex(buf): print( ":".join("{:02x}".format(c) for c in buf)) load_framework('SceneKit') simd_float3 = c_uint32 * 3 SCNNode = ObjCClass('SCNNode') aNode = SCNNode.alloc().init() p5 = aNode.simdScale(restype=simd_float3, argtypes=[]) buf = string_at(byref(p5), lb) printHex(buf) print('p5[0]-[2] = ', p5[0], p5[1], p5[2]) #results in: #80:0d:52:80:02:00:00:00:dc:26:de:01:00:00:00:00:00:00:00:00:00:00:00:00 # #p5[0]-[2] = 2152861056 2 31336156encoding: b'16@0:8' i.e., restype: void/int
The first 8 bytes of the result buffer looks like an address, if (for curiosity) you invoke ObjCInstance on it it returns the Node object aNode. Why???
The only reason I am trying to make the simd properties work is that the old ones might get phased out at some point in the future. Of course until then I can simply redirect the simd calls to the non-simd siblings.