在init之后为对象中的NSUInteger赋值

时间:2014-05-13 16:21:13

标签: ios objective-c nsinteger nsuinteger

我有一个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);

1 个答案:

答案 0 :(得分:3)

我认为这里的问题是objectiveC点语法。因为您正在使用对象执行.,这相当于执行[self drawnCards]++方法调用。该方法的结果递增,而不是drawnCards ivar。要做你想做的事,你需要做_drawnCards++(直接访问iVar),或者你需要做[self setDrawnCards:self.drawnCards++]