我有一个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);
答案 0 :(得分:3)
我认为这里的问题是objectiveC点语法。因为您正在使用对象执行.
,这相当于执行[self drawnCards]++
方法调用。该方法的结果递增,而不是drawnCards ivar。要做你想做的事,你需要做_drawnCards++
(直接访问iVar),或者你需要做[self setDrawnCards:self.drawnCards++]
。