【问题标题】:Trouble in Simple app for iOSiOS的简单应用程序中的问题
【发布时间】:2011-02-22 20:17:10
【问题描述】:

我有问题。我有 2 个类“Rating”(带有 .h 和 .m)、“RatingViewController”(带有 .h 和 .m)。

评分.h

#进口 @interface 评级:NSObject { int usrLyrics; int usr音乐; int usrTotal; } -(无效)setUsrTotal; @end

评分.m

#import "评级.h" @实施评级 -(无效)incUsrLyrics { usrLyrics = 5; } -(无效)incUsrMusic { usr音乐=6; } -(无效)setUsrTotal { usrTotal = usrMusic + usrLyrics; } } @end

RatingViewController.h

@interface RatingItudeViewController : UIViewController { 评级 *评级; } - (IBAction) submitRating;

RatingViewController.m

#import "RatingItudeViewController.h" @implementation RatingItudeViewController - (IBAction) submitRating { [评分 setUsrTotal]; NSLog(@"usrTotal is %i", [rating usrTotal]); } @结尾

它看起来很简单,但不起作用,在控制台中总是“usrTotal is 0”。 请帮帮我。

更新

刚才,我在 RatingViewController.m 中添加了几行

- (IBAction) submitRating {
    [评级 incUsrMusic];
    [评级 incUsrLyrics];
    [评分 setUsrTotal];
    NSLog(@"usrTotal is %d", [rating usrTotal]);
}

在 Rating.h 中

-(void) incUsrLyrics;
-(无效)incUsrMusic;
-(无效)setUsrTotal;
- (int) usrTotal;

当按下一个按钮时,控制台再次“usrTotal is 0”。

【问题讨论】:

    标签: iphone objective-c xcode ios4


    【解决方案1】:

    没错,你需要将usrMusicusrLyrics变量的初始化放入init构造函数消息中。默认情况下,它们被赋值为 0。0+0 是 0,因此是结果。

    【讨论】:

    • 但是如果我想要当我按下按钮时值会发生变化?我该怎么办?
    • 我看不出它不应该工作的任何明显原因。你如何实例化你的 rating 变量?
    • 我把那个项目上传到了github,你可以看看吗?也许我错过了一些东西。 github.com/itunik/Rating2
    【解决方案2】:

    incUsrLyricsincUsrMusic 方法永远不会在任何地方被调用,因此永远不会设置它们的初始值。如果这些值对于类的操作是必不可少的,那么它们应该在该类的初始化程序中建立。

    在Rating.m中

    - (id)init
    {
        if (self = [super init])
        {
            usrLyrics = 5;
            usrMusic = 6;
        }
    
        return self;
    }
    

    或者更好的是,一个更具体的初始化器...

    - (id)initWithUserLyrics:(NSInteger)lyricsValue music:(NSInteger)musicValue
    {
        if (self = [super init])
        {
            usrLyrics = lyricsValue;
            usrMusic = musicValue;
        }
    
        return self;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-06
      • 1970-01-01
      • 2014-12-28
      • 2012-08-10
      • 2014-07-15
      • 2018-11-19
      • 1970-01-01
      相关资源
      最近更新 更多