Я по существу хочу привести каждый пример класса уникальный идентификатор.
Так, я создал статическое целое число. Я увеличиваю его каждый раз, когда новый объект создается, и затем присвойте значение статической переменной к ivar. Но ясно я не понимаю что-то, потому что, скажем, я создаю три объекта, "thisPageNumber" (который является переменной экземпляра), всегда 3, неважно, которые возражают, что я ссылаюсь.
Больше информации:
Этот класс создает много объектов "Страницы". Я хотел бы, чтобы каждая страница знала, что это - номер страницы так, чтобы это могло отобразить корректное искусство страницы, а также выполнить много других различных действий.
.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];
}
}
Я не уверен, почему компилятор не жаловался, но часть вашей проблемы здесь:
thisPageNumber = pageCount;
NSNumber
- это объект. Чтобы установить текущее значение pageCount
, используйте
thisPageNumber = [[NSNumber alloc] initWithInt:pageCount];
Почему бы вам просто не использовать self
в качестве уникального идентификатора? Это уникально.