Доступ к NSMutableArray Трудности - PullRequest
0 голосов
/ 30 декабря 2011

Я пытаюсь создать NSMutableArray при каждом нажатии кнопки. Я использую NSLog для проверки количества массивов после каждого нажатия кнопки, и значение равно нулю. Код ниже.

ProjectViewController.h

NSMutableArray *numberQuery
...
@property (nonatomic, retain) NSMutableArray *numberQuery;

ProjectViewController.m

- (void)makeButtons{
UIButton * pickButton;
int y_plot = 150;
int x_plot = 70;
int z = 0;

for(int y = 1; y < 10; y++)
{

    for(int x = 1; x < 5; x++){
        z++;

        pickButton = [UIButton buttonWithType:UIButtonTypeCustom];
        pickButton.frame = CGRectMake(x*x_plot, y_plot, 60, 40);

        [pickButton setBackgroundImage:[UIImage imageNamed:@"btnUnselected.png"]     forState:UIControlStateNormal];
        [pickButton addTarget:self action:@selector(digitClick:) forControlEvents:UIControlEventTouchUpInside];
        [pickButton setTitle:[NSString stringWithFormat:@"%d",z] forState:UIControlStateNormal];
        pickButton.titleLabel.textColor = [UIColor blackColor]; 
        pickButton.tag = z;
        [self.view addSubview:aButton];
    }
    y_plot=y_plot+45;
  }
}

//************************
- (void)digitClick:(id)sender{
UIButton * chosenButton =(UIButton *)sender;

if ([sender isSelected] ==FALSE) {  
    [sender setSelected:TRUE];
    [chosenButton setBackgroundImage:[UIImage imageNamed:@"btnSelected.png"] forState:UIControlStateNormal];
    chosenButton.titleLabel.textColor = [UIColor whiteColor];

    if([queryNumbersX count]<6){
        [self numberSearchArray:chosenButton.tag];
        }
    }
else
    {[sender setSelected:FALSE];
    [chosenButton setBackgroundImage:[UIImage imageNamed:@"btnUnselected.png"]forState:UIControlStateNormal];
    chosenButton.titleLabel.textColor = [UIColor blackColor];
}

forState:UIControlStateNormal];
NSLog(@"clicked button with title %d",chosenButton.tag); 
}

//************************
-(void) numberSearchArray:(NSInteger)newNumber;
{

   [self.numberQuery addObject:[NSNumber numberWithInt: newNumber]];
   NSLog(@"numberSearchArray %d - count %d",newNumber, [self.numberQuery count]);  
}

Правильно ли я использую NSMutableArray ... объявление?

Это код в методе viewDidLoad

NSMutableArray *numberQuery = [[NSMutableArray alloc] initWithObjects:nil];

Хотя у меня есть массив, объявленный в заголовочном файле, кажется, что я не могу получить к нему доступ вне метода, в котором он был выделен.

Ответы [ 2 ]

1 голос
/ 30 декабря 2011
@property (nonatomic, retain) NSMutableArray *numberQuery;

Вы должны сбалансировать это с

@synthesize numberQuery;

в .m

, и правильное создание будет

self.numberQuery = [NSMuatableArray arrayWithCapacity:someNumber];

Делаяthis

NSMutableArray *numberQuery = [[NSMutableArray alloc] initWithObjects:nil];

Вы не используете свой @property, вы создаете новую переменную, поэтому вы получаете предупреждение о том, что ваша переменная не используется, потому что ее область действия на самом деле является просто методом viewDidLoadобъекта.

1 голос
/ 30 декабря 2011

Похоже, вы никогда не выделяли numberQuery. Таким образом, это всегда ноль, и поэтому addObject метод игнорируется. Вам нужно выделить это в init (или в любом подходящем вам месте) и отпустить в dealloc (или в другом подходящем месте).

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