How to call an Objective-C Method from a C Method?
In order for that to work, you should define the C method like this:
void cMethod(id param);
and when you call it, call it like this:
cMethod(self);
then, you would be able to write:
[param objcMethod];
In your cMethod
.
This is because the self
variable is a special parameter passed to Objective-C methods automatically. Since C methods don't enjoy this privilege, if you want to use self
you have to send it yourself.
See more in the Method Implementation section of the programming guide.
I know your question is already answered by Aviad but just to add to the info since this is not unrelated:
In my case I needed to call an Objective-C method from a C function that I did not call myself (a Carbon Event function triggered by registering a global hotkey event) so passing self as a parameter was impossible. In this particular case you can do this:
Define a class variable in your implementation:
id thisClass;
Then in your init method, set it to self:
thisClass = self;
You can then call Objective-C methods from any C function in the class without the need to pass self
as a parameter to the function:
void cMethod([some parameters]) {
[thisClass thisIsAnObjCMethod];
}