【发布时间】:2014-01-08 03:50:42
【问题描述】:
假设我们在MyClass.h文件中声明一个类如下。
#import <Foundation/Foundation.h>
@interface MyClass : NSObject
+(void)aClassMethod;
@end
在MyClass.m 文件中..
@implementation MyClass
+(void)aClassMethod{
NSLog(@"It is a Class method");
}
@end
我的问题是编译后这个aClassMethod 将被存储在哪里?
如果我们声明一些成员函数,那么它们将被存储在哪里。
【问题讨论】:
-
也许这可以回答您的问题:stackoverflow.com/questions/982116/… 或者如果您需要更多深度:friday.com/bbum/2009/12/18/objc_msgsend-part-1-the-road-map
-
其实我想知道类方法存放在栈、代码还是数据段的什么位置??编译器完成了哪些任务来处理类方法?
-
你应该改变你的问题。
-
您所说的成员函数在Objective-C中称为实例方法。
-
@MohanChaudhari 扩展一下 jlehr 的答案,如果你
clang -rewrite-objc main.c你的程序,你会看到类方法转向静态 C 函数,因此它们在生成的对象中被标记为这样。有关内存布局的等效 C 问题的详细信息适用于 Objective-C,因为不同之处在于 Objective-C 程序与执行消息分派的运行时链接,如上面 vikingosegundo 所示。
标签: objective-c oop static-methods class-method