在 Objective C 中声明一个对象数组

Declaring an array of objects in objective c

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

 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

card 在此代码中未定义。除非它是全局常量或其他东西,否则它不会编译。此外,otherCardsmatch: 中未使用。

我怀疑这段代码应该在一个循环中,可能是这样的:

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

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

    return score;
}

不,编译器不检查 NSArray 的内容。你可以在里面放任何类型的物体,所以你应该经常检查物体是否是你想要的类型。

而且,就像 Aaron 所说的那样,代码无法编译...