大家,
我是C / Objective-C的新手,我正在Xcode中做一些练习。实际上它是来自斯坦福iTunes.U CS 193 iOS课程的第二讲,如果有人熟悉...
该练习要求为名为Card的班级创建一个属性。
所以在.h文件中声明:
@property (strong, nonatomic) NSString *suit;
在.m文件中,它覆盖了getter方法:
-(NSString *)suit
{
return _suit ? _suit : @"?";
}
在这里,我不明白这个退货声明的意思......
根据教练的说法,getter方法可以防止套装属性为零。但我尝试使用以下代码而不是上面的代码,它没有用。
-(NSString *)suit
{
if (!_suit)
return _suit;
else
return @"?";
}
这里有两个问题:
1,
return _suit ? _suit : @"?";
这个return语句是什么意思?
2,为什么我的代码不起作用?
赞赏!
答案 0 :(得分:2)
x ? y : z
语法称为conditional or ternary if operator。如果x
为真,则其值为y
,否则其值为z
。
当您将其转换为if
/ else
表单时,如果您不应该将其转换为_suit
。它应该是:
if (_suit)
return _suit;
...
答案 1 :(得分:1)
将您的代码更改为以下内容:
-(NSString *)suit
{
if (_suit) //if _suit exists, then return _suit. !_suit is wrong.
return _suit;
else
return @"?";
}