Here is a method from a class in some of Apple's example code. Why is this method defined as a static C method rather than an Objective C class method or a class method? In the context in which it is used I suppose it needs to be as performant as possible. Is this why? Is this the most performant way to declare a method?
static BOOL lineIntersectsRect(MKMapPoint p0, MKMapPoint p1, MKMapRect r)
{
//Do stuff
return MKMapRectIntersectsRect(r, r2);
}
It's not a static method, but rather a function. And it's probably defined as a function because it operates on two data types (MKMapPoint
and MKMapRect
) which are not objects (they are C structs) and thus can't have methods associated with them.
C functions are faster than Objective C methods because C functions bypass the Objective C runtime messaging system. The static
keyword in the declaration limits the visibility of the function to the current compilation unit, so it is only visible in that particular file. The compiler can take a hint from the static
keyword to optimize the assembler output for the function, so it is possible to increase performance further.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With