2013-02-20 1 views
-1

Я инициализируется в NSMutableArray так:Получение размер NSMutableArray

tileArray = [[NSMutableArray alloc]initWithObjects: 
       (tile1,tile2,tile3,tile4,tile5,tile6,tile7,tile8,tileBlank), nil]; 

Я пытаюсь напечатать размер массива, выполнив:

NSLog(@"Size2: %i", [tileArray count]); 

Он говорит мне, что размер 0. Что могло бы вызвать это?

заголовочных файл

@interface STView : UIView{ 
NSMutableArray *tileArray; 
TileView *tile1; 
TileView *tile2; 
TileView *tile3; 
TileView *tile4; 
TileView *tile5; 
TileView *tile6; 
TileView *tile7; 
TileView *tile8; 
TileView *tileBlank; 

int width; 
int height; 
} 

- (void) getScreenSize; 
@end 

TileView.m

- (id)initWithFrame:(CGRect)frame withImageNamed: (NSString*) imageName{ 
if (self = [super initWithFrame:frame]) { 
    //initilization code 
    image = [[UIImageView alloc] 
      initWithImage: [UIImage imageNamed: imageName]]; 
    image.frame = self.bounds; 
    image.opaque = YES; 
    [self addSubview:image]; 
} return self; 
} 
+0

Дайте больше кода, мне интересно, где вы определяете массив и в каком месте вы его размещаете. – edzio27

ответ

4

Сначала удалите скобки. Величина выражения (tile1,tile2,tile3,tile4,tile5,tile6,tile7,tile8,tileBlank) равна tileBlank.

Во-вторых, где эти tile* ребята объявляются? Все ли они надежно не равны нулю?

+0

Они должны быть не пустыми, но они становятся объявленными в файле .h. – joshft91

+0

Как они определяются? Когда они распределяются и чем? – iluvcapra

+0

TileView - это класс и где, насколько я могу судить, они выделяются – joshft91

0

Вам необходимо определить массив как свойство в вашем .h и синтезировать его, затем использовать self.titleArray. Независимо от функции, которую вы объявили в массиве (например, viewDidLoad), он сохраняет информацию только в этой функции. В каждой другой функции это нуль, поэтому вам нужно сохранить свойство.

Смежные вопросы