當我檢查一個爲零的單身屬性時,它會殺死我的應用程序。但是,當我檢查類實例屬性爲零時,一切正常。檢查具有零值的單身屬性會導致錯誤
這工作得很好:
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