gpt4 book ai didi

objective-c - 子类化时访问属性

转载 作者:行者123 更新时间:2023-12-02 07:29:31 25 4
gpt4 key购买 nike

<分区>

我最近意识到使用 self.whatever = thing 从 init 内部访问类的属性是不正确的形式,您应该使用 _whatever = thing 直接访问属性。当我为基类设置值时,这很好用。但是,当我尝试在子类的 init 内部设置值时,出现错误“使用未声明的标识符 _whatever”。从子类的 init 内部使用 self.whatever 工作正常。

为了清楚起见,对于在基础对象接口(interface)中声明的@property int,编译:

-(id) init {
self = [super init];
if (self) {
[self createName];

self.whatever = 100;
}
return self;
}

这不是:

-(id) init {
self = [super init];
if (self) {
[self createName];

_whatever = 100;
}
return self;
}

我想我在这里误解了什么。我尝试搜索我做错了什么,但我不知道要搜索的正确词。

根据要求,基类的 header :

#import <Foundation/Foundation.h>

@interface DTCharacter : NSObject

@property BOOL isIdle;

@end

我正在使用自动合成,所以在基类的实现中没有关于这个变量的任何内容。

子类的头文件也没有提及或引用该变量。

我试图在子类的实现中在这里分配它:

-(id) init {
self = [super init];

if (self) {
[self createName];

_isIdle = YES; //says use of undeclared identifier
//this would work: self.isIdle = YES;
}
return self;
}

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