当我检查一个为零的单身属性时,它会杀死我的应用程序。但是,当我检查类实例属性为零时,一切正常。检查具有零值的单身属性会导致错误
这工作得很好:
self.MyProperty == nil
但是这会杀了以“EXC_BAD_ACCESS”
[MySingleton sharedManager].SomeProperty != nil
有什么用,我不能检查零单身的差异应用程序?
这里的单执行:
.h文件中:
@interface MySingleton : NSObject {
NSString * SomeProperty;
}
@property (nonatomic, copy) NSString * SomeProperty;
+(MySingleton *)sharedManager;
@end
.m文件:
#import "MySingleton"
static MySingleton *sharedManager = nil;
@implementation MySingleton
@synthesize SomeProperty;
- (void)dealloc {
[SomeProperty dealloc];
[super dealloc];
}
+(MySingleton *)sharedManager
{
if (!sharedManager){
sharedManager = [[MySingleton alloc] init];
}
return sharedManager;
}
这是我发现在控制台试图分配的东西的时候,当SomeProperty:
MyApp(51363,0xa0389500) malloc: *** mmap(size=2147487744) failed (error code=12) *** error: can't allocate region *** set a breakpoint in malloc_error_break to debug Current language: auto; currently objective-c (gdb) break malloc_error_break Note: breakpoints 6 and 8 also set at pc 0x929c2072. Breakpoint 11 at 0x929c2072 (gdb) continue (gdb) po [MySingleton sharedManager].SomeProperty Cannot access memory at address 0x0 (gdb) po [MySingleton sharedManager] <Session: 0x1938fa0>
我只在尝试分配时才得到上述内容。当试图读取变量是崩溃发生的地方。
您需要发布更多的代码片段,以便人们可以考虑它们! – Yuji 2010-02-01 21:36:50
显示更多编码。 – 2010-02-01 21:39:28
我更新了线程以包含单例实现。 – 4thSpace 2010-02-01 21:43:46