Objective-C: присвоение значения статической переменной переменной экземпляра - PullRequest
1 голос
/ 13 июля 2010

По сути, я хочу дать каждому экземпляру класса уникальный идентификатор.

Итак, я создал статическое целое число.Я увеличиваю его каждый раз, когда создается новый объект, а затем присваиваю значение статической переменной ивару.Но ясно, что я чего-то не понимаю, потому что, скажем, я создаю три объекта, «thisPageNumber» (который является переменной экземпляра) всегда равен 3, независимо от того, на какой объект я ссылаюсь.1006 * Этот класс создает несколько объектов «Страница».Мне бы хотелось, чтобы каждая страница знала свой номер страницы, чтобы на ней можно было отображать правильные изображения страниц и выполнять ряд других различных действий.

.h частичный код:

@interface Page : UIViewController
{
    NSNumber            *thisPageNumber;
    UIImageView         *thisPageView;
    UIImageView         *nextPageView;
    UIImageView         *prevPageView;  
    UIImageView         *pageArt;
}

.m частичный код:

@implementation Page

static int pageCount = 0;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
        pageCount++;
        thisPageNumber = pageCount;
    }
    return self;
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    CGRect defaultFrame = CGRectMake(0.0, 0.0, 1024.0, 768.0);

    if (thisPageView == nil) {
        thisPageView = [[UIImageView alloc] 
                        initWithImage:[UIImage 
                                       imageNamed:[NSString stringWithFormat:@"Page%i.png", [thisPageNumber intValue]]]];
        thisPageView.frame = defaultFrame;
        [self.view addSubview:thisPageView];
    }

    if (nextPageView == nil && [thisPageNumber intValue] < BOOK_PAGE_COUNT) {
        nextPageView = [[UIImageView alloc] 
                        initWithImage:[UIImage 
                                       imageNamed:[NSString stringWithFormat:@"Page%i.png", [thisPageNumber intValue]+1]]];
        nextPageView.frame = defaultFrame;
        [self.view addSubview:nextPageView];
    }

    if (prevPageView == nil && [thisPageNumber intValue] > 1) {
        prevPageView = [[UIImageView alloc] 
                        initWithImage:[UIImage 
                                       imageNamed:[NSString stringWithFormat:@"Page%i.png", [thisPageNumber intValue]-1]]];
        prevPageView.frame = defaultFrame;
        [self.view addSubview:prevPageView];
    }    
}

Ответы [ 2 ]

2 голосов
/ 14 июля 2010

Я не уверен, почему компилятор не жаловался, но часть вашей проблемы здесь:

thisPageNumber = pageCount;

NSNumber - это объект. Чтобы установить текущее значение pageCount, используйте

thisPageNumber = [[NSNumber alloc] initWithInt:pageCount];
0 голосов
/ 13 июля 2010

Почему бы вам просто не использовать self в качестве уникального идентификатора?Это уникально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...