@property int值无法改变,真的很奇怪,我无法找到解决方案

时间:2017-08-01 09:09:31

标签: ios objective-c

我使用按钮来调用@ interface中声明的int值的更改。这是我的接口代码。

@interface CheckInController ()
@property (nonatomic, assign) int checkInDate;
@end

按钮选择器的代码

- (void)checkin {
    self.checkInDate++;
    NSLog(@"checkInDate: %d",_checkInDate);
}

无论何时单击按钮,控制台面板都会显示如下

2017-08-01 16:46:39.631 HeJing[1888:64607] checkInDate: 0
2017-08-01 16:46:40.057 HeJing[1888:64607] checkInDate: 0
2017-08-01 16:46:40.342 HeJing[1888:64607] checkInDate: 0
2017-08-01 16:46:40.578 HeJing[1888:64607] checkInDate: 0

之后我分配一些这样的int值

self.checkInDate = 1;
NSLog(@"checkInDate: %d",_checkInDate);

控制台面板始终显示

2017-08-01 17:06:38.182 HeJing[1991:75284] checkInDate: 0
2017-08-01 17:06:39.101 HeJing[1991:75284] checkInDate: 0
2017-08-01 17:06:39.255 HeJing[1991:75284] checkInDate: 0
2017-08-01 17:06:39.401 HeJing[1991:75284] checkInDate: 0

我做错了吗? 上面的代码都在.m文件中运行。 和我的二传手法

- (void)setCheckInDate:(int)checkInDate {
    NSString *infoString = [NSString stringWithFormat:@"已连续签到%d天,再坚持%d天就可以积分翻倍哦!",_checkInDate,6 - _checkInDate];
    NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:infoString];
    [attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithRed:0.97 green:0.44 blue:0.13 alpha:1.00] range:NSMakeRange(5, 2)];
    [attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithRed:0.97 green:0.44 blue:0.13 alpha:1.00] range:NSMakeRange(11, 2)];
    _checkInInfoLabel.attributedText = attributedString;
}

1 个答案:

答案 0 :(得分:1)

您正在使用自定义设置器来覆盖- (void)setCheckInDate:(int)checkInDate

所以当你写self.checkInDate = 1;时,它正在调用自定义setter。 但是在那个setter中你没有写_checkInDate = checkInDate。 添加此项可以解决您的问题。