我的情况:我创建了一个单例类的对象。 Object包含有关另一个对象的Ivars和一些NSStrings字段的信息。
-(id)init
{
[super init];
objectID=[NSString stringWithString:@"sqlRowId"];
tableNameForBO=[[NSString stringWithString: @"BOComment"] lowercaseString];
ivarListForBO=class_copyIvarList([BOComment class], &ivarCount);
return self;
};
当我调用该对象时,它第一次正常工作。所有领域都有正确的信息。 但是当加载完成后(在applicationDidFinishLunching之后)应用程序调用_UIApplicationHandleEvent会删除所有字段中的信息但是objectID。
所以在程序中我有指向这个单例对象的指针保持不变但是他的字段有完全错误的信息。
NSZombie说:
-[CFString respondsToSelector:]: message sent to deallocated instance 0x6022a10
-[CFString _cfTypeID]: message sent to deallocated instance 0x6022a10
-[CFString _cfTypeID]: message sent to deallocated instance 0x6022bb0
应用程序因程序收到信号而崩溃:“EXC_BAD_ACCESS”。
这会导致什么?不知道。
非常感谢!
答案 0 :(得分:0)
您的对象似乎无意中被释放了。您需要确保正确分配/保留/释放对象。
查看关于iOS内存管理的非常好的介绍:http://interfacelab.com/objective-c-memory-management-for-lazy-people/
答案 1 :(得分:0)
非常感谢!问题在于没有恰当地分配对象的字段。
更改init方法之后如何:
- (ID)INIT { self = [super init];
objectID=[[NSString alloc] initWithString:@"sqlRowId"];
tableNameForBO=[[NSString alloc] initWithString: [@"BOComment" lowercaseString]];
ivarListForBO=class_copyIvarList([BOComment class], &ivarCount);
insertClauseForBO = [[NSString alloc] initWithString: [self getInsertClauseForBO]];
return self;
};
它运作得很好!
非常感谢它真正帮助的答案 - 知道在哪里看。