gpt4 book ai didi

ios - 使用 self 与类名

转载 作者:行者123 更新时间:2023-11-28 22:19:15 26 4
gpt4 key购买 nike

CS193P PlayingCard.M 节选

+ (NSArray *)rankStrings
{
return @[@"?",@"A",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"J",@"Q",@"K"];
}
+(NSUInteger)maxRank{
return [[self rankStrings] count]-1;
}
-(void)setRank:(NSUInteger)rank
{
if(rank <= [PlayingCard maxRank])
{
_rank = rank;
}
}

我明白了,在第三种方法中,你不能说

-(void)setRank:(NSUInteger)rank
{
if(rank <= [self maxRank])
{
_rank = rank;
}
}

因为它是一个实例方法,所以self 将引用一个不能使用maxRank 方法的实例对象。

但是在 maxRank 实现中,不会return [[PlayingCard rankStrings] count]-1;

返回 [[self rankStrings] count]-1;

有什么区别?

最佳答案

如果有人对您的类进行子类化,差异可能会很大。如果他们这样做,并覆盖您的 maxRank 函数,那么新定义将在子类中使用,而不是在基类中定义的定义。如果要强制子类使用 bass 类的 maxRank 定义,则使用类名,否则使用 self

关于ios - 使用 self 与类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20820514/

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