| OS X - Development and Darwin Discussion and questions about development for Mac OS X. |
| Post Reply | New Thread | Subscribe |
|
|
Thread Tools |
![]() Member Since: Jun 24, 2008
Posts: 196
![]() Mac Specs: Macbook White 2.13Ghz 160GB 10.6.4 (Buggy Version :() Snow Leopard
|
Hello.
I'm trying to use an Objective-C class made in Python to call python functions but Objective-C can't call the method which calls the python function. Here's the framework code which the Objective-C code: Code:
// Created by Matthew Mitchell on 04/07/2010.
// Copyright 2010 __MyCompanyName__. All rights reserved.
//
#import <Cocoa/Cocoa.h>
@interface Game : NSObject {
id current_pyfunc;
}
-(void) addPyFunc: (id) pyfunc;
-(void) callPyFunc;
@end
//
// scalelib.m
// Scalelib Cocoa Framework
//
// Created by Matthew Mitchell on 04/07/2010.
// Copyright 2010 __MyCompanyName__. All rights reserved.
//
#import "Game.h"
@implementation Game
-(void) addPyFunc: (id) pyfunc{
current_pyfunc = pyfunc;
}
-(void) callPyFunc{
[current_pyfunc call]; //Segmentation fault. Method doesn't exist for some reason.
}
@end
Code:
#!/usr/bin/env python2.3
from objc import *
import os,sys
loadBundle("Scalelib Cocoa Framework",globals(),os.path.dirname(sys.argv[0]) + "/Scalelib Cocoa Framework/build/Release/Scalelib Cocoa Framework.framework/")
class PythonCallback(NSObject):
def setCallback_withArgs_(self, python_function,args): #Python initialisation of class, add the callback function and arguments
self.python_function = python_function
self.args = args
return self
def call(self): #Used by Objective-C to call python function
self.python_function(*self.args)
def create_callback(function,args):
return PythonCallback.alloc().init().setCallback_withArgs_(function,args)
def square(num):
print num**2
instance = Game.alloc().init()
callback = create_callback(square,[3])
callback.call()
instance.addPyFunc_(create_callback(square,[5]))
instance.callPyFunc()
9 Segmentation fault The segmentation fault is because the call method made in python doesn't exist apparently. So how to I make it exist for Objective-C? Even if the code did work it would be useless but I'm only testing things at the moment. Once I have the callbacks working, I'll be able to make my library for python. Thank you for any help. |
| QUOTE Thanks | |
| Post Reply | New Thread | Subscribe |
| Thread Tools | |
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
|
|
|
|
|||||||
Thread |
Thread Starter |
Forum |
Replies |
Last Post |
| Client-side cookies on Python in Mac OSX | Hikaru79 | OS X - Development and Darwin | 0 | 07-12-2007 10:25 PM |
All times are GMT -4. The time now is 06:37 AM.
Powered by vBulletin