[英]Assign value to NSUInteger in object after init
我有一个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的数字(drawedCards)设置正确,但是,以后我将无法更改它。 我没有在Xcode中收到任何警告或崩溃,但数量仍然无法更改。 我试图做self.drawnCards ++和self.drawnCards = 10等,但没有任何效果。 知道我的代码有什么问题吗? 我正在用以下方法检查值:
NSLog(@"Value: %tu", self.drawnCards);
我相信这里的问题是ObjectiveC点语法。 因为你在做.
对于一个对象,这等效于进行[self drawnCards]++
方法调用。 该方法的结果增加,而不是drawCards ivar增加。 要执行您想要的操作,您需要执行_drawnCards++
(直接访问iVar),或者需要执行[self setDrawnCards:self.drawnCards++]
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.