Mac OS X 10.6中的NSOperation是否有错误?

Geo*_*lly 0 objective-c foundation nsoperation

如果我NSOperation在发送之前发布了一个实例,-init我会得到一个segmentation fault.

我认为这是有效代码的原因:

  • Apple在其文档中做到了这一点.
  • Gnustep就是implementation of NSNumber这样做的,所以相当肯定这也是Apple的代码.(至少是.)
  • NSObjects -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];
}
Run Code Online (Sandbox Code Playgroud)
  • 您怎么看?这是一个错误吗?
  • 你能告诉我一个具有相同行为的另一个类的例子吗?
  • 知道为什么会这样吗?

Chu*_*uck 7

发送除init尚未初始化的对象以外的任何消息都不是有效代码AFAIK.调用超类初始化程序,然后释放,我打赌它不会崩溃(虽然有一个类的初始化程序返回一个完全不相关的类打击我doubleplusungood).