Ниже приведен довольно базовый код задачи.Он содержит одну переменную экземпляра i
.Проблема в том, что всякий раз, когда я пытаюсь присвоить ему, это приводит к segfault почти сразу после этой операции присвоения.Примечание: это не сегфоут в точке назначения.Обычно это происходит после назначения, и я пытаюсь вызвать метод.ТАКЖЕ, обратите внимание, что это не ваш стандартный код mac / apple target-c.Я использую простую ванильную версию cygwin (Linux).Поэтому я должен сгенерировать свои собственные alloc
и dealloc
методы.
#import <objc/runtime.h>
#import <objc/Object.h>
@interface Test
{
int i;
}
+(id)alloc;
- (id) init;
- (int) load;
@end
@implementation Test
+(id)alloc
{
self = class_createInstance(self,0);
return self;
}
-(id)init
{
i = 0; // <------ if I comment out this line, there is no segfault
return self;
}
-(int) load
{
return i;
}
@end
int main(int argc, const char * argv[])
{
Test * test = [[Test alloc] init];
int v = [test load]; //segfaults here (NOTE: if I comment out this line, it does not segfault)
return 0;
}
Что вызывает ошибку segfault?