ios – 函数调用后指针更改

ios – 函数调用后指针更改,第1张

概述这是关于我的问题的一些简单点; >如果重要的话,使用XCode 6.0.1,没有优化的llvm 6.0(DEBUG) >这是在一个单独的线程上发生的; self.ioThread = [NSThread.alloc initWithTarget:self selector:@selector(initData) object:nil].autorelease; >不使用ARC(无所谓) >第一个代 这是关于我的问题的一些简单点;

>如果重要的话,使用XCode 6.0.1,没有优化的llvm 6.0(DEBUG)
>这是在一个单独的线程上发生的;

self.ioThread = [NSThread.alloc initWithTarget:self selector:@selector(initData) object:nil].autorelease;

>不使用ARC(无所谓)
>第一个代码;

if (_updatedAt) // A simple C function call    data[@"updatedAt"] = RFC3339DateString(_updatedAt);

> RFC3339DateString函数;

Nsstring* RFC3339DateString(NSDate* date) {    if (!date || ![date isKindOfClass:NSDate.class]) return nil;    NSDateFormatter *rfc3339DateFormatter = NSDateFormatter.new.autorelease;    NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIDentifIEr:@"en_US_POSIX"].autorelease;    [rfc3339DateFormatter setLocale:enUSPOSIXLocale];    [rfc3339DateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"];    [rfc3339DateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];    return [rfc3339DateFormatter stringFromDate:date]; // point of crash.}

因此,在我标记为“崩溃点”的线上,它说;

– [__ NSCFString timeIntervalSinceReferenceDate]:无法识别的选择器发送到实例0x7fdc2870

在这种情况下有几件奇怪的事我无法解决;

>在函数的第一行,我已经对类型检查日期对象进行了类型检查.
>在调试器上,当我说po日期和p日期时,这些是我得到的结果;

(lldb) po datestamp(lldb) p date(NSDate *)  = 0x7fdc2870 @"stamp"

>当我去调用RFC3339DateString函数的函数并说p _updatedAt和po updatedAt;

(lldb) p _updatedAt(NSDate *)  = 0x7fd88a10 class name = __NSDate(lldb) po _updatedAt2014-09-27 06:37:33 +0000

我无法理解指针是如何在中途改变的.有人了解情况吗?

截图1; http://cl.ly/image/1n1l1E1i2a3y

截图2; http://cl.ly/image/2A0s3S2J0S1P

代码周围的汇编代码我正在调用RFC3339DateString函数; http://pastie.org/private/e7xzc3ntfz0p0d95g5hzw

解决方法 我怀疑_updatedAt被覆盖了.有时它包含NSDate,有时包含Nsstring.添加观察点以查看其写入位置.

此外,您永远不应该从RFC3339DateString()返回nil,因为这将导致[NSMutableDictionary addobject:forKey:]中的异常.

最后,在日期格式化字符串中,您不需要这么多引号,只是在’T’和’Z’附近.

总结

以上是内存溢出为你收集整理的ios – 函数调用后指针更改全部内容,希望文章能够帮你解决ios – 函数调用后指针更改所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1024669.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存