API Notes: Foundation framework¶
These bindings are accessed through the
AppKit package (that is,
See API Description for PyObjCTools.FndCategories for some API extensions for the Foundation framework.
These classes are barely supported, interaction with the lowlevel AppleEvent machinery is not tested at all and probably doesn’t work.
Use the ScriptingBridge and/or the appscript library instead of this class.
-encodeValuesOfObjCTypes:: Use the basic encoding methods instead
-decodeValuesOfObjCTypes:: Use the basic decoding methods instead
-initWithBytesNoCopy:length: Don’t use these, Cocoa
will try to use the C function
free()on the buffer when the data object is released and that won’t work.
-initWithBytesNoCopy:length:freeWhenDone:: Using these is fairly dangerous, your program can crash when the data buffer is cleaned up by the Python garbage collector before the
NSDataobject is deallocated.
freeWhenDoneargument must be
buffer(value)instead, those will automatically be bridged to an instance of a
This method is not supported.
NSKeepAllocationStatistics: These values are not available from Python.
These functions are not available from Python.
NSSetUncaughtExceptionHandleris not supported
NSCParameterAssertare not supported.
PyObjC does not fully support running with the garbage collector enabled at the moment.
enableCollectorForPointer:: These API’s are not supported at all.
NSZeroRect: these are mutable. Do not use them to initialize a variable that you’ll modify later on, use the default constructor instead.
This is, instead of:
point = NSZeroPoint # ... point.x = 4
point = NPoint() # ... point.x = 4
point = NSPoint(x=4)).
The CoreGraphics types
CGRectare interchangeable with their Foundation counterparts, there is no need to explicitly convert between them.
NSObjCValueand related constants (such as
NSObjCNoType) are not available in Python.
It is possible to get and set argument values and the return value of an invocation, but only for the simple cases, that is when the value is a single value and not a pointer to value or an array of values.
That is, the following methods cannot be accessed through an
NSInvocationat the moment:
NSArray.arrayWithObjects_count_: The first argument is a C-array of values
NSFormatter.getObjectValue_forString_range_error_: The first and last arguments are a by-reference arguments.
It is possible to get/set values whose type is a basic C type, that is the return value
NSArray.countcan be extracted from an
This limitation should be fine for most usecases of
NSInvocation, please let us know if you run into cases where this limitation is a problem.
NSMapTableObjectPointerPersonalityis not supported. Trying to access values in a maptable with this personality for the keys or values will crash your program.
ABSare not available in Python. Use the regular python functions
This class is only usable when the array is configured for Object use.
Accessing the actual function properties (such as
hashFunction) is not supported.
Implementing or calling
handleMachMessage: is not supported. The argument is mapped on
a plain python integer, accessing the actual Mach message buffer is not possible.
initWithUUIDBytes: has an argument of type bytes with length 16.
getUUIDBytes: returns an instance of bytes of length 16.
initWithBytesNoCopy:length:encoding:deallocator:: These methods are available from Python, but are not really useful because the pointer argument for the deallocator will not be the same as the argument passed in the first argument of this selector.
initWithFormat:options:locale:arguments:cannot be used from Python.