开发者

how to unset/kill static int variables in objective c

开发者 https://www.devze.com 2023-04-05 00:33 出处:网络
I am using static int variablesbut having some problem. Problem is that its not getting reset. If I leave this page and come again then I found previous values while I have reset it.

I am using static int variables but having some problem. Problem is that its not getting reset. If I leave this page and come again then I found previous values while I have reset it.

Please give me solution.

here is my code

- (void)updateQuestion:(NSTimer *)theTimer {
    static int questionCounter = 1;

    questionCounter += 1;


    count=(questionCounter%QUESTION_TIME_LIMIT);

    tfLeftTime.text=[NSString stringWithFormat:@"%d",QUESTION_TIME_LIMIT];


    tmLeftTime=[[NSTimer alloc] ini开发者_StackOverflowt];
    tmLeftTime=[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateLeftTime:) userInfo:nil repeats:YES];
    [self playMusic];
    if (questionCounter>QUESTION_PER_LEVEL) {
        if ([tmQuestion isValid]) {
            [tmQuestion invalidate];
            questionCounter=1;
            count=1;
            tmQuestion=nil;
            [self showAdvertisement];
        }
    }

}

Thank & Regards Shivam


You can also use a instance variable to have the effect you want.

The counter will remain as long as the object lives, and is destroyed when you no longer need it.


  1. You cannot declare a static variable in one method and use in in another one. I assume you declared it in the file, outside of any methods. Use instance variables instead.
  2. You have a memory leak at:

    tmLeftTime=[[NSTimer alloc] init];

    tmLeftTime=[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateLeftTime:) userInfo:nil repeats:YES];

First allocation of the tmLeftTime is never released.

[NSTimer scheduledTimerWithTimeInterval: target: selector: userInfo: repeats:] gives you an autoreleased timer.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号