gpt4 book ai didi

iphone - 我可以用 .m 文件中的类的子类覆盖属性的类吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:42:20 25 4
gpt4 key购买 nike

鉴于我有一个游戏类:

@interface Game : NSObject

使用 CutthroatGame 子类:

@interface CutthroatGame : Game

如果我的 ViewController .h 文件中有这样的属性:

@property (strong) Game *game;

我可以在我的 ViewController .m 文件中安全地覆盖这样的属性吗:

if (_playerCount == 3) {
_game = [[CutthroatGame alloc] init];
else {
_game = [[Game alloc] init];
}

编辑:如果这应该有效,我该如何处理以下错误?

CutthroatGame 定义了一些额外的属性,例如:

@property (strong) Player *opponent2

当我尝试使用 ViewController 的 _game 属性访问它们时,出现以下错误:

 _game.opponent2 = [players objectAtIndex:0]; -- ERROR: Property 'opponent2' was not found on object of type 'Game *'

最佳答案

当然!那就是Liskov substitution principle是关于。如果您从 Game 正确地继承了 CutthroatGame,则用它的子类替换 Game 将没有问题。

关于iphone - 我可以用 .m 文件中的类的子类覆盖属性的类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17355381/

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