Если я отпустил экземпляр NSOperation
перед отправкой -init
к нему, я получаю segmentation fault
.Есть ли ошибка в NSOperation в Mac OS X 10.6?
Причины я думаю, что это правильный код:
- Apple, делает это в its documentation.
- Gnustep делает это в своем
implementation of NSNumber
, поэтому вполне уверен, что это тоже в коде Apple. (По крайней мере был.) NSObject
s-init
ничего не делает, поэтому-release
, который принадлежит кNSObject
, должен работать до этого.
// gcc -o test -L/System/Library/Frameworks -framework Foundation test.m
#import <Foundation/Foundation.h>
int main(int argc, char *argv[]) {
NSOperation *theOperation = [NSOperation alloc];
[theOperation release];
}
- Как вы думаете, это ошибка?
- Можете ли вы показать мне пример другого класса, который имеет такое же поведение?
- Любая идея, почему это происходит?
@gs Пожалуйста, прочитайте мой комментарий, отвечая на ваш ответ :) –
Моя точка еще стоит :). Я уверен, что '-init' NSOperation выделяет некоторый указатель (на структуру или что-то еще). Значение указателя не задано 'NULL' временем выполнения, поэтому вызов' -release' освобождает указатель, который не был инициирован, и чье значение my равно 0 (иначе у вас нет доступа: D) –