Integration with ctypes

The standard library module ctypes can be used to interact with arbitrary C APIs. PyObjC contains some APIs that make interacting with ctypes easier by having a way to convert PyObjC objects to and from instances of c_void_p.

Converting Objective-C instances to and from c_void_p

  • Converting an c_void_p to a PyObjC proxy type of the right type can be done by calling objc.objc_object with a c_void_p argument:

    ctypes_value = ... # Somehow get a ctypes pointer
    instance = objc.objc_object(c_void_p=ctypes_value)
    
  • Converting an PyObjC proxy instance to a c_void_p is done by the method __c_void_p__.

Converting Opaque Pointer values to and from c_void_p

  • Converting an c_void_p to a PyObjC opaque pointer type can be done by calling the proxy type with a with a c_void_p argument:

    ctypes_value = ... # Somehow get a ctypes pointer
    instance = Foundation.NSZonePtr(c_void_p=ctypes_value)
    
  • Converting an PyObjC proxy instance to a c_void_p is done by the method __c_void_p__().