Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用self vs类名_Ios_Objective C - Fatal编程技术网

Ios 使用self vs类名

Ios 使用self vs类名,ios,objective-c,Ios,Objective C,摘自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 &

摘自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;
    }
}
+(NSArray*)rankStrings
{
返回[?]、“A”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”、“J”、“Q”、“K”];
}
+(整数)maxRank{
返回[[self rankStrings]计数]-1;
}
-(void)setRank:(整数)秩
{

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

当有人对你的
playernadd
类进行子类化时,差异会变得显著。最好不要硬编码类名,除非你有很好的理由这么做。你的意思是当子类选择重写
rankStrings
时,在超类中使用
self
将保持避免重新实现
+maxRank
?这是类方法和实例方法之间的一个简单区别。因此,如果他们更改子类中的
rankstring
数组,调用
maxRank
仍然会给他们
PlayingCard
rankstring
?不,如果
maxRank
获得
rankstring
使用
[自排列串]
。如果它使用
[播放卡片排列串]
,则是。
-(void)setRank:(NSUInteger)rank
{
    if(rank <= [self maxRank])
    {
        _rank = rank;
    }
}