【发布时间】:2017-04-26 03:26:08
【问题描述】:
我试图了解 Objective-C 运行时,但不知道 self 指针指向的位置。我写了一个例子来检查&self 会显示什么。我创建了ClassA,如下所示:
@implementation ClassA
-(void) print {
NSLog(@"Class A &self is: %p", &self);
}
@end
然后我在main() 创建了两个A 实例并调用printf() 将其打印出来:
ClassA *firstInstance = [ClassA new];
[firstInstance print];
ClassA *secondInstance = [ClassA new];
[secondInstance print];
我得到两个实例的相同地址:
Class A &self is: 0x7fff5bacf4e8
Class A &self is: 0x7fff5bacf4e8
当我使用以下代码创建第二个类时更是如此:
@implementation ClassA
-(void) print {
NSLog(@"Class B &self is: %p", &self);
}
@end
我在&self 得到相同的地址。
Class B &self is: 0x7fff5bacf4e8
为什么&self 总是指向同一个地址?
【问题讨论】:
标签: objective-c pointers self