我正在尝试更详细地了解 Objective-C 编程语言。
现在我有一个关于[self]
设置值时调用的问题。
Apple 文档说“如果您不使用 self.,则直接访问实例变量。(...)”
所以假设我有一个带有实例变量的狗对象NSString *name
。
我为这样的实例变量创建了一个设置器,而不使用[self]
关键字:
(void)setName:(NSString *)_name
{
name = _name;
}
当我使用 [self] 关键字创建一个设置器时,它看起来像这样:
(void)setName:(NSString *)_name
{
self->name = _name;
}
在主方法中,我创建了一个新的狗对象并设置并返回其名称值:
Dog *myDog = [[Dog alloc] init];
myDog.name = @"Yoda";
NSLog(@"name of the dog: %@", myDog.name);
在这两种情况下,我都会得到 Yoda 的返回值。但是从技术上讲,使用和不使用 [self] 的实例变量调用之间的区别在哪里?是不是我不使用setter方法就调用了同一个变量(内存)?