Iphone iOS简易应用程序中的问题

Iphone iOS简易应用程序中的问题,iphone,objective-c,xcode,ios4,Iphone,Objective C,Xcode,Ios4,我有个问题。我有两个类“Rating”(带.h和.m)、“RatingViewController”(带.h和.m) 评级.h #import @interface Rating : NSObject { int usrLyrics; int usrMusic; int usrTotal; } - (void) setUsrTotal; @end #进口 @接口等级:NSObject{ 国际音乐剧; 国际音乐; int usrTotal; } -(无效)setUsrTo

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

评级.h

#import @interface Rating : NSObject { int usrLyrics; int usrMusic; int usrTotal; } - (void) setUsrTotal; @end #进口 @接口等级:NSObject{ 国际音乐剧; 国际音乐; int usrTotal; } -(无效)setUsrTotal; @结束 评级.m

#import "Rating.h" @implementation Rating -(void) incUsrLyrics { usrLyrics = 5; } - (void) incUsrMusic { usrMusic = 6; } - (void) setUsrTotal { usrTotal = usrMusic + usrLyrics; } } @end #导入“Rating.h” @执行评级 -(无效)无效歌词 { usrLyrics=5; } -(空)音乐{ usrMusic=6; } -(无效)setUsrTotal{ usrTotal=usrMusic+usrLyrics; } } @结束 RatingViewController.h

@interface RatingItudeViewController : UIViewController { Rating *rating; } - (IBAction) submitRating; @接口比率TudioDeviceController:UIViewController{ 评级*评级; } -(i)提交; RatingViewController.m

#import "RatingItudeViewController.h" @implementation RatingItudeViewController - (IBAction) submitRating { [rating setUsrTotal]; NSLog(@"usrTotal is %i", [rating usrTotal]); } @end - (IBAction) submitRating { [rating incUsrMusic]; [rating incUsrLyrics]; [rating setUsrTotal]; NSLog(@"usrTotal is %d", [rating usrTotal]); } #导入“RatingItudeViewController.h” @实现比率TudioDeviceController -(i)提交{ [评级设置为总]; NSLog(@“usrTotal为%i”,[评级usrTotal]); } @结束 它看起来很简单,但不起作用,在控制台中总是“usrTotal为0”。 请帮帮我

更新

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

#import "RatingItudeViewController.h" @implementation RatingItudeViewController - (IBAction) submitRating { [rating setUsrTotal]; NSLog(@"usrTotal is %i", [rating usrTotal]); } @end - (IBAction) submitRating { [rating incUsrMusic]; [rating incUsrLyrics]; [rating setUsrTotal]; NSLog(@"usrTotal is %d", [rating usrTotal]); } -(i)提交{ [音乐]; [评级];; [评级设置为总]; NSLog(@“usrTotal为%d”,[评级usrTotal]); } 评级为h

-(void) incUsrLyrics; - (void) incUsrMusic; - (void) setUsrTotal; - (int) usrTotal; -(无效)歌词; -(空)音乐; -(无效)setUsrTotal; -(int)usrTotal;
当按下按钮时,在控制台中再次显示“usrTotal为0”。

这是正确的,您需要将usrMusic和usrLyrics变量的初始化放入init构造函数消息中。默认情况下,它们的赋值为0。0+0为0,因此结果为

方法
incusrryps
incusrrmusic
在任何地方都不会被调用,因此从不设置它们的初始值。如果这些值对于类的操作至关重要,那么它们应该在该类的初始值设定项中建立

在评级中

- (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;
}

但是如果我想在我按下按钮时改变值?我该怎么办?我看不出有任何明显的理由说明它不起作用。如何实例化您的评级变量?我已将该项目上载到github,您能看一下吗?也许我错过了什么。