在目标c中声明一组对象

时间:2015-01-01 00:12:03

标签: ios objective-c arrays object nsarray

我正在研究以下目标c示例代码。我的问题是,在创建一个将数组作为参数-(int) match: (NSArray *)otherCards;的方法时,它是否意味着该数组中的对象是卡片,因为它是在Card.h中声明的?我不明白card中的if ([card.contents isEqualToString:self.contents])来自哪里。非常感谢您的帮助!

 Card.h
  #import <Foundation/Foundation.h>
  @interface Card : NSObject
  @property (strong, nonatomic) NSString *contents;
  @property (nonatomic, getter=isChosen) BOOL chosen;
  @property (nonatomic, getter=isMatched) BOOL matched;
  - (int)match:(NSArray *)otherCards;
  @end

Card.m
interface Card()
@end
@implementation Card
- (int)match:(NSArray *)otherCards
{
     int score = 0;
     if ([card.contents isEqualToString:self.contents]) {
        score = 1;
}
  return score;
}
@end

2 个答案:

答案 0 :(得分:3)

此代码中未定义

card。它不会编译,除非它是一个全局常量或其他东西。此外,otherCards中未使用match:

我怀疑这段代码应该是循环的,也许是这样的:

- (int)match:(NSArray *)otherCards
{
    int score = 0;

    for (Card *card in otherCards) {
        if ([card.contents isEqualToString:self.contents]) {
            score++;
        }
    }

    return score;
}

答案 1 :(得分:1)

不,编译器不检查NSArray的内容。你可以把任何类型的对象放在里面,所以你应该总是检查对象是你想要的类型。

而且,就像Aaron说的那样,代码不能编译......