【问题标题】:Object changes from NSMutableArray to NSData to NSString对象从 NSMutableArray 更改为 NSData 到 NSString
【发布时间】:2010-10-07 16:47:11
【问题描述】:

我有一个正常运行的程序。然后我从http://github.com/matej/MBProgressHUD 下载了一些代码,以便在做某事时显示进度表。

这是使进度条弹出的代码。

[HUD showWhileExecuting:@selector(myTask) onTarget:self withObject:nil animated:YES];

这将在方法 myTask 运行时显示进度表。

这是showWhileExecuting 方法的代码。

- (void)showWhileExecuting:(SEL)method onTarget:(id)target withObject:(id)object animated:(BOOL)animated {

    methodForExecution = method;
    targetForExecution = [target retain];
    objectForExecution = [object retain];

    // Launch execution in new thread
    taskInProgress = YES;
    [NSThread detachNewThreadSelector:@selector(launchExecution) toTarget:self withObject:nil];

    // Show HUD view
    [self show:animated];
}

如果我使用它来调用函数myTask,那么我的一个类属性将从某个NSMutableString 更改为NSData 对象,然后它会更改为NSString。我在代码中没有看到导致这种情况发生变化的任何地方,所以它可能是某种错误。内存是否损坏?是什么导致这种情况发生?

【问题讨论】:

    标签: objective-c cocoa-touch nsstring nsmutablearray nsdata


    【解决方案1】:

    很可能是内存问题(保留/释放问题)。如果你没有正确地保留一个对象,它可能会从你下面释放出来。那时,内存将被操作系统回收,它可能决定在那里存储其他东西。尝试打开 NSZombies,并仔细检查您的保留/释放/自动释放。

    【讨论】:

    • 当我打开 NSZombies 时,我可以看到对象变成了一个 NSZombie NSArray。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    相关资源
    最近更新 更多