我見過一位教授使用賦值運算符在C++中這樣說:在Objective-C中擴展賦值運算符的功能?
int valueOne;
int valueTwo;
valueOne = valueTwo = 0;
我想開始做用Objective-C,但在這樣類似的東西:
@interface GameViewController() // Class extension in .m
@property (nonatomic) NSUInteger pOneScore;
...
- (void)resetScore {
// Update singleton and local variable in one line using assignment operator
[[MySingleton sharedManager] setPlayerOneScore:pOneScore = 0];
…
..這似乎工作。任何人都可以在這裏看到潛在的危險嗎? 問題的其他部分是:我是否也可以爲對象執行此操作?我認爲在對象的情況下,如果可能的話,我將兩個指針分配到同一個內存位置是這樣的:
@interface GameViewController() // Class extension in .m
@property (nonatomic, strong) NSNumber *valueOne;
@property (nonatomic, strong) NSNumber *valueTwo;
…
- (void)resetScore {
// Assign valueOne and valueTwo at the same time;
_valueOne = _valueTwo = @(0);
NSLog(@」valueOne = %@ and points to %p」, _valueOne, _valueOne);
NSLog(@」valueTwo = %@ and points to %p」, _valueTwo, _valueTwo);
…
我測試,它似乎是好了,我不知道是否有任何危險這裏。我期待着任何和所有的評論。謝謝
我也想知道如果賦值運算符可以用類似的方式在Java和C#中使用。
我在這裏看到的主要危險是它使你的代碼難以閱讀,沒有任何實際的好處。當您瀏覽代碼時,很容易錯過'setPlayerOneScore:'調用中有一個賦值語句的事實。 – omz