Re: [Pyobjc-dev] Indexed Accessor use gives "Bus Error"
Brought to you by:
ronaldoussoren
From: Neil Martinsen-B. <nbu...@em...> - 2004-12-08 19:59:00
|
On Dec 8, 2004, at 12:49, Bob Ippolito wrote: > On Dec 8, 2004, at 12:23 PM, Neil Martinsen-Burrell wrote: > >> I am having a problem implementing KVO-compliant indexed-accessor >> methods using PyObjC. The problem is a "Bus Error" when the program >> is run. The following seems to be a minimal reproduction of the >> problem. This is on 10.3.6 with the default Python installation and >> PyObjC 1.1. The nib simply contains an NSTableView with two columns >> (with keys current and name) bound to an NSArrayController that is >> bound to an instance of the following class (with contentArray = >> TestList.list). The crash report generated follows the program >> listing. Are index accessors not fully supported in PyObjC? Am I >> mis-declaring the accessors? Thanks for any help you can give. > > countOfList should also be an objc.accessor (I think this is the > reason for your crash) Indeed, this solves the bus error problem. All of the accessors needed to be explicitly declared as such. If the accessors that are supposed to return (void) are not objc.accessor's, then they raise an error because they return the wrong type. But accessors such as countOfList that return data do not raise errors if they are not objc.accessor's, they just cause the Bus Error. Is this the desired behavior? Is there a way to require that Python accessors are appropriately "decorated"? In general is there a way to make the error reporting in this respect more robust? Bus Error is not the most revealing message about what is wrong with the code. > Also, try PyObjC from svn trunk. We're gearing up for a 1.2 release > soon, hopefully this month, and I recently made some changes to the > bridge with regard to bridging python lists, tuples, and dictionaries, > that may make some Objective C code happier because now they maintain > the same object identity invariant that their Foundation counterparts > do. The trunk has nor regression in this regard, but it does not miraculously make broken code work. :( Thanks. -Neil -- Neil Martinsen-Burrell nbu...@em... |