2011-06-14 51 views
2

如何向我的位置模型添加公共布爾屬性?例如:location.has_lights = YES;Objective C布爾屬性和內存

我不明白爲什麼我需要保留NSString,但IDE試圖保留bool時顯示錯誤。

此代碼產生一個 'EXC_BAD_ACCESS'

RKLocation.h

#import <RestKit/RestKit.h> 
@interface RKLocation : RKObject { 
    NSString *_name; 
    bool has_lights; 
} 
@property (nonatomic , retain) NSString *name; 
@property (nonatomic) bool has_lights; 
@end 

RKLocation.m

#import "RKLocation.h" 
@implementation RKLocation 
@synthesize name = _name; 
@synthesize has_lights; 
- (void)dealloc { 
    [_name release]; 
    [super dealloc]; 
} 
@end 

回答

4

一個bool不是對象類型,這是一個標量,所以你不要保留/釋放它。

1

NSString是一個對象。它存儲在堆上。

布爾值不是一個對象,而是通常存儲在堆棧上的標量數據類型。 你不需要保留它。

保留在objectiveC中告訴運行時「指針指向的對象仍然需要,不要刪除它」。