在 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
在此代码中未定义。除非它是全局常量或其他东西,否则它不会编译。此外,otherCards
在 match:
中未使用。
我怀疑这段代码应该在一个循环中,可能是这样的:
- (int)match:(NSArray *)otherCards
{
int score = 0;
for (Card *card in otherCards) {
if ([card.contents isEqualToString:self.contents]) {
score++;
}
}
return score;
}
不,编译器不检查 NSArray 的内容。你可以在里面放任何类型的物体,所以你应该经常检查物体是否是你想要的类型。
而且,就像 Aaron 所说的那样,代码无法编译...
我正在研究下面的 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
在此代码中未定义。除非它是全局常量或其他东西,否则它不会编译。此外,otherCards
在 match:
中未使用。
我怀疑这段代码应该在一个循环中,可能是这样的:
- (int)match:(NSArray *)otherCards
{
int score = 0;
for (Card *card in otherCards) {
if ([card.contents isEqualToString:self.contents]) {
score++;
}
}
return score;
}
不,编译器不检查 NSArray 的内容。你可以在里面放任何类型的物体,所以你应该经常检查物体是否是你想要的类型。
而且,就像 Aaron 所说的那样,代码无法编译...