我想知道是否有人遇到过这个问题。
这可以追溯到我的另一个问题,即人们说代码没有理由突然开始工作。
我花了几个小时调试我的应用程序,通过每一行代码。如果我从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。
答案 0 :(得分:0)
您在此行设置断点:
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *cardButtons;
虽然我从未在代码中的这个位置设置断点,但我怀疑发生了什么两者 setter和getter都获得了断点。
在你的“viewDidLoad
”中调用“CardGameViewController
”之前,这就是加载XIB /故事板的地方,也会加载UIButtons的IBOutletCollection。因此断点击中了。
如果您关闭该断点,我认为您在设备和模拟器中启动应用程序会有更好的运气。