Хорошо для выпуска указателя это - ноль?

Большой вопрос: как можно получить голову вокруг этого? Это просто берет практику. Вы пытаетесь реализовать проектирование баз данных, сталкиваетесь с проблемами со своим дизайном, Вы осуществляете рефакторинг и помните в следующий раз, что работало и что не сделало.

Для ответа на конкретные вопросы... это - определенное добавленное мнение, как в, "как я сделал бы это", не приняв во внимание потребности производительности и такой. Я всегда запускаю полностью нормализованный и иду оттуда на основе реального тестирования:

Table Event
EventID
Title
StartDateTime
EndDateTime

Table ShiftEvent
ShiftEventID
EventID
ShiftSpecificProperty1

...

Table Product
ProductID
Name

Table Category
CategoryID
Name

Table CategoryProduct
CategoryID
ProductID

Также повторению, что Pierre сказал - инструмент ORM, нравится, в спящем режиме, делает контакт с трением между реляционными структурами и структурами OO намного более хорошим.

7
задан fuzzygoat 1 October 2009 в 13:42
поделиться

4 ответа

Sending a message to nil won't cause an error, so this is fine. You need to make sure the pointers are actually nil though - sending a message to a garbage pointer will likely cause errors.

22
ответ дан 6 December 2019 в 06:03
поделиться

Да, вы можете сделать это, потому что вы можете безопасно отправить сообщение (например, release ) на nil , и оно просто ничего не сделает.

7
ответ дан 6 December 2019 в 06:03
поделиться

В Objective-C важно различать объекты и переменные. Вы не можете освободить указатель (значение переменной), вы можете только освободить объект (объект, на который ссылается указатель). Указатель nil не относится ни к какому объекту, поэтому сообщения, отправленные в nil, ничего не делают (что в целом безопасно).

0
ответ дан 6 December 2019 в 06:03
поделиться

If you use the accessor property to create your get/set methods:

@interface rocketShip : NSObject {
    NSString *name; 
    NSNumber *thrust;
}

@property (retain, nonatomic) NSString *name;
@property (retain, nonatomic) NSNumber *thrust;

And in your .m file:

@synthesize name;
@synthesize thrust;

You can then just set your variable to nil in dealloc. This will in fact call your setter and decrement the reference count by one and clean things up.

1
ответ дан 6 December 2019 в 06:03
поделиться