在我的应用程序中,我有一个函数,从一个长长值_flightId
返回一个bool值,该值最初分配为0
。在调用下面的函数之前,通常会给它赋一个值。
@property (nonatomic, assign) long long flightId;
- (BOOL)isReady
{
return (_flightId);
}
问题是,有时,即使它被分配了一个不同于0
的值,该函数将返回0
。
如果_flightId
= 92559101
,函数将返回1
。
如果_flightId
= 92559104
,函数将返回0
。
您的BOOL
可能只是定义为8位int (char
),所以当您返回long long
时,您只是获得低阶8位。值92559104
是0x5845700
,你可以看到LS 8位全部设置为零。
你应该做一个显式转换,例如
return _flightId != 0;
或习惯用法:
return !!_flightId;