gpt4 book ai didi

objective-c - 在其自定义 setter 中使用 NSString 会导致无限线程

转载 作者:行者123 更新时间:2023-12-03 16:50:09 26 4
gpt4 key购买 nike

首先,我为 NSString* 编写了自定义 setter ,如下所示:

- (void)setDateString:(NSString *)newDateString {
self.dateString = newDateString;
NSInteger dateNumber = [dateString integerValue];
// this line causes crash

// do something here..blah blah
}

然后程序因无限多个线程执行 [XXX setDateString:] 而停止。

经过几次无用的尝试后,我发现了这个 question/answer这告诉我

do not use self. inside of custom accessors. access the variable directly,

所以我把我的代码变成了

- (void)setDateString:(NSString *)newDateString {
//self.dateString = newDateString;
dateString = newDateString;
NSInteger dateNumber = [dateString integerValue];

// do something here..blah blah
}

然后一切都像魅力一样!!

<小时/>

我是一些目标语言的初级开发人员,也是 Objective-C 的新手。

对于这个问题我想详细了解一下,而不是不明白原因就去解决问题。

所以请向我提供一些 Material /网站以了解更多信息。

顺便说一句,我使用 ARC。

谢谢大家。 :)

最佳答案

self.dateString = newDateString;

相当于

[self setDateString:newDateString];

因此这将导致无限递归,因为您在-setDateString:内调用它。

另请参阅Difference between self.ivar and ivar? .

关于objective-c - 在其自定义 setter 中使用 NSString 会导致无限线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11039476/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com