gpt4 book ai didi

c - 在 objective-c 类中定义的 c 函数的范围是什么?

转载 作者:太空狗 更新时间:2023-10-30 03:52:23 24 4
gpt4 key购买 nike

当我发现一段有趣的代码时,我正在阅读有关绕过 objective-c 的消息传递以获得性能(与这个特定问题无关)的信息:

#import <Cocoa/Cocoa.h>

@interface Fib : NSObject { }

- (long long) cFib: (NSUInteger) number;

@end

@implementation Fib

// c implementation of fib
long long cFibIMP(NSUInteger number)
{
return (number < 3) ? 1 : cFib(number - 1) + cFib(number - 2);
}

// method wrapper for c implementation of fib
- (long long) cFib: (NSUInteger) number
{
return cFibIMP(number);
}

@end

我的问题是;当在 objective-c 对象中使用 c 函数时,c 函数(在这种特殊情况下为 cFibIMP)放置在什么范围内? objective-c 类是否封装了 c 函数以消除名称冲突的变化,或者 c 函数只是简单地转储到整个 objective-c 程序的全局范围内?

最佳答案

函数被转储到“全局”范围内。

您可以通过在示例代码末尾添加一个新类来检查这一点:

@interface Gib : NSObject {}
@end
@implementation Gib
- (void) t
{
NSLog(@"%d", cFibIMP(10));
}
@end

关于c - 在 objective-c 类中定义的 c 函数的范围是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2483626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com