如何增加整数属性?
你无法做self.integer++
,你可以做integer++
,但我不确定会不会保留它......
最后一个会保留“整数”的值吗?
感谢。
答案 0 :(得分:3)
integer++
有效,因为您直接访问integer
并为integer
分配新值,而不是发送消息和使用访问者。假设integer
被声明为NSInteger
属性,以下语句将对整数值产生相同的影响,但直接访问不符合KVO。
[self setInteger:0];
self.integer = self.integer + 1; // use generated accessors
NSLog(@"Integer is :%d",[self integer]); // Integer is: 1
integer++;
NSLog(@"Integer is :%d",[self integer]); // Integer is: 2
答案 1 :(得分:0)
我相信Obj-C在过去一两年内得到了更新,因此这种代码可以运行。我写了一个快速测试,发现以下代码都有效并且有效:
在我的.h:
#import <Cocoa/Cocoa.h>
@interface TheAppDelegate : NSObject <NSApplicationDelegate> {
NSUInteger value;
}
@property NSUInteger otherValue;
- (NSUInteger) value;
- (void) setValue:(NSUInteger)value;
@end
在我的.m:
#import "TheAppDelegate.h"
@implementation TheAppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
value = self.otherValue = 1;
NSLog(@"%lu %lu", (unsigned long)value, (unsigned long)self.value);
NSLog(@"%lu %lu", (unsigned long)_otherValue, (unsigned long)self.otherValue);
self.value++;
self.otherValue++;
NSLog(@"%lu %lu", (unsigned long)value, (unsigned long)self.value);
NSLog(@"%lu %lu", (unsigned long)_otherValue, (unsigned long)self.otherValue);
}
- (NSUInteger) value
{
return value;
}
- (void) setValue:(NSUInteger)_value
{
value = _value;
}
@end
我的输出:
1 1
1 1
2 2
2 2
我相信我阅读的某个技术文档解释了这一点,但我不记得我在哪里找到它。我相信它说的是:
x++
将更改为x+=1
x+=y
将替换为x=x+y
此外,x=y.a=z
将替换为y.a=z,x=y.a
(当您处理属性时 - 而不是结构)