-1

我有一个 NSObject 的子类。在这个类中,我有一个 NSUInteger 声明如下:

@interface Deck : NSObject

- (id)initDecks:(NSUInteger)decks;
- (Card *)drawCard;

@property (nonatomic, assign) NSUInteger drawnCards;

在我的实现文件中,我有以下代码:

#import "Deck.h"

@implementation Deck

- (id)initDecks:(NSUInteger)decks {
    self = [super init];

    if (self) {
        self.drawnCards = 1;
    }

    return self;
}

- (BJCard *)drawCard {
    self.drawnCards++;
    return nil;
}

在 init 方法中分配给 NSUInteger (drawnCards) 的数字设置正确,但是,我以后无法更改它。我在 Xcode 中没有收到任何警告或崩溃,但数字保持不变。我试图做 self.drawnCards++ 和 self.drawnCards = 10 等,但没有任何效果。知道我的代码可能有什么问题吗?我正在检查值:

NSLog(@"Value: %tu", self.drawnCards);
4

1 回答 1

3

我相信这里的问题是objectiveC点语法。因为您正在.处理一个对象,所以这相当于进行[self drawnCards]++方法调用。该方法的结果是递增的,而不是 drawCards ivar。要执行您想要的操作_drawnCards++(直接访问 iVar),或者您需要执行[self setDrawnCards:self.drawnCards++].

于 2014-05-13T18:15:56.650 回答