objective-c 局部变量报错

泥奏凯 发布于 2015/06/18 22:14
阅读 190
收藏 0

这是Deck.h的代码

#ifndef Machismo_Deck_h

#define Machismo_Deck_h


#import <Foundation/Foundation.h>

#import "Card.h"

@interface Deck : NSObject


-(void)addCard:(Card *)card atTop:(BOOL)atTop;

-(void)addCard:(Card *)card;


-(Card *)drawRandomCard;


@end


#endif

下面是Deck.m的代码

#import "Deck.h"


@interface Deck()

//private methods are declared here

@property (strong, nonatomic) NSMutableArray *cards;

@end


@implementation Deck


-(NSMutableArray *)cards{

    if (!_cards) {

        _cards = [[NSMutableArray alloc] init];

    }

    return _cards;

}


-(void)addCard:(Card *)card atTop:(BOOL)atTop{

    if (atTop) {

        [self.cards insertObject:card atIndex:0];

    } else {

        [self.cards addObject:card];

    }

}


-(void)addCard:(Card *)card{

    [self addCard: card atTop: NO];

}


-(Card *)drawRandomCard{

    Card *randomCard = nil;//Parse Issue Expected expression

    if ([self.cards count]) {

        unsigned index = arc4random() % [self.cards count];

        randomCard = self.cards[index];//Semantic Issue Use of undeclared identifier 'randomCard'

        [self.cards removeObjectAtIndex:index];

    }

    return randomCard;//Semantic Issue Use of undeclared identifier 'randomCard'

}


@end

红色的是错误的地方,刚接触Objective-C~ 请老司机看看为什么报错~

加载中
0
人独立
人独立
我觉得你没有持有randomCard,身为局部变量,在if执行体中设置指针之后,很有可能在if执行后被释放掉,不确定啊 只是感觉。。。
0
泥奏凯

引用来自“人独立”的评论

我觉得你没有持有randomCard,身为局部变量,在if执行体中设置指针之后,很有可能在if执行后被释放掉,不确定啊 只是感觉。。。
那应该怎么做呢,是要设置成强指针吗?
0
首席撸肾虚
首席撸肾虚
目测是因为没识别出card类,检查下把,或者删了这几行重写下[13]
泥奏凯
现在莫名其妙的就好了,但是这是怎么造成的,请问你知道吗?是xcode的毛病还是什么原因~
0
泥奏凯

引用来自“首席撸脱臼”的评论

目测是因为没识别出card类,检查下把,或者删了这几行重写下[13]

我删了重写,然后就好了,然后关掉xcode再打开它又报错~

泥奏凯
回复 @首席撸脱臼 : 原来这样啊~谢谢你~
首席撸肾虚
首席撸肾虚
xcode经常这样,很莫名其妙的
首席撸肾虚
首席撸肾虚
xoc
返回顶部
顶部