Objective C bool свойство и память - PullRequest
2 голосов
/ 14 июня 2011

Как добавить публичное логическое свойство в мою модель Location? Пример: location.has_lights = YES;

Я не совсем понимаю, почему мне нужно сохранить 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

Ответы [ 3 ]

4 голосов
/ 14 июня 2011

bool не является типом объекта, это скаляр, поэтому вы не сохраняете / не освобождаете его.

2 голосов
/ 14 июня 2011

Попробуйте использовать BOOL вместо bool.

Также может помочь этот вопрос, который был задан всего несколько минут назад: Objective-C Deloloc с логическим значением

1 голос
/ 14 июня 2011

NSString - это объект.Он хранится в куче.

Логическое значение - это не объект, а скалярный тип данных, обычно хранящийся в стеке.Вам не нужно его сохранять.

Сохранение в targetC сообщает среде выполнения «объект, на который указывает указатель, все еще нужен, пока не удаляйте его».

...