error: Trying to put the stack in unreadable memory at: 0x7ffeeafe2af0 : using userDefaults
error: Trying to put the stack in unreadable memory at: 0x7ffeeafe2af0 : using userDefaults
我正在 objective-c 中做一个项目,我必须在 userDefaults 中存储一些值。我已经在同一个项目中做了同样的事情。它工作正常,但现在我试图在 userDefaults 中添加一些值,它在从 userDefaults 获取任何数据时显示错误。我将数据添加为,
NSString * totalBitValue = [NSString stringWithFormat:@"%.6f Bit",
totalValue /
[[[NSUserDefaults standardUserDefaults] objectForKey:@"Bit"] floatValue]];
[[NSUserDefaults standardUserDefaults]setObject:totalBitValue forKey:@"totalBTCValue"];
[[NSUserDefaults standardUserDefaults]setFloat:totalUSDValue forKey:@"totalUsedValue"];
[[NSUserDefaults standardUserDefaults] synchronize];
错误为,
error: Trying to put the stack in unreadable memory at: 0x7ffeeafe2af0
我在以下行中收到错误,
if( [[NSUserDefaults standardUserDefaults] objectForKey:@"CoinValue"] != nil) {
[[self ValueLabel] setText: [NSString stringWithFormat:@"%@", [[NSUserDefaults standardUserDefaults] objectForKey:@"CoinValue"] ]];
}
任何人都可以提前帮助me.Thanks
你的问题的原因是你的代码被递归了。
据我了解,您将 NSNotificationCenter
用于观察者密钥 NSUserDefaultsDidChangeNotification
。所以每当 NSUserDefaults
更新时,它都会触发 defaultsChanged
方法。但是在其中,您继续更改 NSUserDefaults
,为 totalBTCValue
和 totalUSDValue
设置新值(正如我猜测的那样),这使得 defaultsChanged
再次被调用并导致递归。
要解决此问题,您不应在 defaultsChanged
方法中更新 NSUserDefaults
我正在 objective-c 中做一个项目,我必须在 userDefaults 中存储一些值。我已经在同一个项目中做了同样的事情。它工作正常,但现在我试图在 userDefaults 中添加一些值,它在从 userDefaults 获取任何数据时显示错误。我将数据添加为,
NSString * totalBitValue = [NSString stringWithFormat:@"%.6f Bit",
totalValue /
[[[NSUserDefaults standardUserDefaults] objectForKey:@"Bit"] floatValue]];
[[NSUserDefaults standardUserDefaults]setObject:totalBitValue forKey:@"totalBTCValue"];
[[NSUserDefaults standardUserDefaults]setFloat:totalUSDValue forKey:@"totalUsedValue"];
[[NSUserDefaults standardUserDefaults] synchronize];
错误为,
error: Trying to put the stack in unreadable memory at: 0x7ffeeafe2af0
我在以下行中收到错误,
if( [[NSUserDefaults standardUserDefaults] objectForKey:@"CoinValue"] != nil) {
[[self ValueLabel] setText: [NSString stringWithFormat:@"%@", [[NSUserDefaults standardUserDefaults] objectForKey:@"CoinValue"] ]];
}
任何人都可以提前帮助me.Thanks
你的问题的原因是你的代码被递归了。
据我了解,您将 NSNotificationCenter
用于观察者密钥 NSUserDefaultsDidChangeNotification
。所以每当 NSUserDefaults
更新时,它都会触发 defaultsChanged
方法。但是在其中,您继续更改 NSUserDefaults
,为 totalBTCValue
和 totalUSDValue
设置新值(正如我猜测的那样),这使得 defaultsChanged
再次被调用并导致递归。
要解决此问题,您不应在 defaultsChanged
方法中更新 NSUserDefaults