应用程序不会在Xcode模拟器上运行,但会在iPhone上运行

时间:2014-01-02 00:12:47

标签: ios objective-c xcode

我想知道是否有人遇到过这个问题。

这可以追溯到我的另一个问题,即人们说代码没有理由突然开始工作。

我花了几个小时调试我的应用程序,通过每一行代码。如果我从Xcode,模拟器或iPhone启动我的应用程序,它将无法运行。然而,当我在不通过Xcode的情况下在iPhone上启动我的应用程序时,它完美无缺。

我尝试重新启动Xcode,同样的事情发生了。知道可能导致这种情况的原因吗?

#import "CardGameViewController.h"
#import "Deck.h"
#import "PlayingCardDeck.h"
#import "PlayingCard.h"
#import "CardMatchingGame.h"

@interface CardGameViewController ()

@property  (nonatomic, strong) CardMatchingGame *game;
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *cardButtons;

@property (weak, nonatomic) IBOutlet UILabel *scoreLabel;
@end

@implementation CardGameViewController

-(CardMatchingGame *)game{
    if (!_game) _game = [[CardMatchingGame alloc] initWithCardCount:[self.cardButtons count] usingDeck:[self createDeck]];

    return _game;

}

-(Deck *)createDeck{
    return [[PlayingCardDeck alloc] init];
}

- (IBAction)touchCardButton:(UIButton *)sender {
    NSUInteger chosenButtonIndex = [self.cardButtons indexOfObject:sender];
    [self.game chooseCardatIndex:chosenButtonIndex];
    [self updateUI];
}


-(void)updateUI{
    for (UIButton *cardButton in self.cardButtons){
        NSUInteger cardButtonIndex = [self.cardButtons indexOfObject:cardButton];
        Card *card=[self.game cardAtIndex:cardButtonIndex];
        [cardButton setTitle:[self titleForCard:card] forState:UIControlStateNormal];
        [cardButton setBackgroundImage:[self backgroundImageForCard:card] forState:UIControlStateNormal];
        cardButton.enabled = !card.isMatched;
        self.scoreLabel.text = [NSString stringWithFormat:@"Score: %d", self.game.score];

    }

}

-(NSString *)titleForCard:(Card *)card {
    return card.isChosen ? card.contents : @"";
}

-(UIImage*) backgroundImageForCard:(Card *)card{
    return [UIImage imageNamed:card.isChosen ? @"cardFront" : @"cardBack"];
}
@end

有一个断点
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *cardButtons;

在调试器中,它显示-0 [CardGameViewController setCardButtons:]

控制台中的所有属性都显示为nil。

1 个答案:

答案 0 :(得分:0)

您在此行设置断点:

@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *cardButtons;

虽然我从未在代码中的这个位置设置断点,但我怀疑发生了什么两者 setter和getter都获得了断点。

在你的“viewDidLoad”中调用“CardGameViewController”之前,这就是加载XIB /故事板的地方,也会加载UIButtons的IBOutletCollection。因此断点击中了。

如果您关闭该断点,我认为您在设备和模拟器中启动应用程序会有更好的运气。