我用strstr判断是否包含字符串,然后将结果强转为BOOL类型,例如:
BOOL result = (BOOL)strstr(aString, "test");
在 32 位 iOS 设备中,当 aString 包含“test”字符串时,有时会出现结果为 NO。但是 strstr(aString, "test") 正确返回地址。
最佳答案
根据体系结构,BOOL
可能被typedef
转换为unsigned char
。那只是8位。当您将指针转换为 BOOL
时,您可能只会从指针获取低 8 位。如果这些位全为 0,则 BOOL
为假,即使指针不是 NULL
(0)。
换句话说,不要那样做。
如果你想要一个 bool 值,使用 strstr(aString, "test") != NULL
甚至 !!strstr(aString, "test")
。
关于ios - (BOOL)strstr() 在 32 位 iOS 设备中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32020876/