-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 ( drawCards ) に割り当てられた番号は正しく設定されていますが、後で変更することはできません。Xcode で警告やクラッシュは発生しませんが、数値は変更できません。self.DrawingCards++ や self.DrawingCards = 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 に答える