开发者社区> 问答> 正文

objective-c 局部变量报错?报错

这是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~ 请老司机看看为什么报错~

展开
收起
爱吃鱼的程序员 2020-06-14 15:20:16 482 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    我觉得你没有持有randomCard,身为局部变量,在if执行体中设置指针之后,很有可能在if执行后被释放掉,不确定啊只是感觉。。。<divclass='ref'>

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

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

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

    目测是因为没识别出card类,检查下把,或者删了这几行重写下[13]回复<aclass='referer'target='_blank'>@首席撸脱臼:原来这样啊~谢谢你~xcode经常这样,很莫名其妙的xoc

    2020-06-14 15:20:35
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载