1

我正在开发一个应用程序,该应用程序显示从应用程序附带的列表中随机选择的俳句。用户可以将俳句标记为“最爱”(也可以取消标记)。模拟器一切正常,NSLog 将isFavorite每个俳句的布尔属性显示为 0 或 1。

但是当我在 iPhone 上运行该应用程序时,NSLog 显示布尔属性有时为 0,有时为 1,有时为 96,有时为 -32,与用户是否真的喜欢俳句没有任何关联。我怎样才能解决这个问题?

EDIT:这是我正在使用的代码:

-(void)displayHaiku {
    [self.displayHaikuTextView removeFromSuperview];
    self.haiku = [[GHHaikuInstance alloc] init];
    NSLog(@"Is haiku favorite? %d",self.haiku.isFavorite); 

        //On simulator the above line always logs 0 or 1, correlated exactly with whether the haiku has been marked "favorite."  On iPhone it could be any number, and shows no correlation.

    //Code that displays haiku onscreen.
}

isFavorite是在 中声明和合成的 BOOL GHHaikuInstance,但仅当用户将其标记为收藏时才设置为 1。(换句话说——我没有明确地将其设置为 0;我只是使用默认值 0,直到用户将其更改为 1。)

4

3 回答 3

3

要记录BOOL值,您可以使用字符串

NSLog(@"Is haiku favorite? %@", self.haiku.isFavorite ? @"YES" : @"NO"); 
于 2013-03-22T18:12:21.730 回答
1

请检查发布和调试版本之间的区别:))

(检查“优化级别”设置。调试版本设置为无 [-O0],而发布版本设置为最快,最小 [-Os]。) - 所以......不同的浮点行为..

您必须将您的语句/初始化方法从

BOOL isFavorite;

BOOL isFavorite = NO;
于 2013-03-23T04:58:49.227 回答
1

苹果推荐%hhd

您可以阅读有关格式说明符的更多信息。

于 2013-03-22T19:55:55.237 回答