Я пытаюсь использовать GNUstep. Если он работает хорошо, я постараюсь сделать с ним сайт. В любом случае, я застрял с первого раза. Выполнение GNUstep NSRunLoop
не работает хорошо.Почему GNUstep NSRunLoop немедленно завершает работу с ARC?
Вот мой код.
#import <Foundation/Foundation.h>
@interface AAA : NSObject
- (void)test1:(id)s;
@end
@implementation AAA
- (void)test1:(id)s
{
NSLog(@"%@", s);
}
- (void)dealloc
{
NSLog(@"DEALLOCED!!");
}
@end
int main(int argc, const char * argv[])
{
@autoreleasepool
{
AAA* aaa = [[AAA alloc] init];
[[NSNotificationCenter defaultCenter] addObserver:aaa selector:@selector(test1:) name:NSFileHandleDataAvailableNotification object:nil];
[[NSFileHandle fileHandleWithStandardInput] waitForDataInBackgroundAndNotify];
[[NSRunLoop currentRunLoop] run];
}
return 0;
}
Я построил этот код с помощью этой команды.
clang -v
EE_GNUSTEP_OPTS="-MMD -MP -DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_RUNTIME=1 -DGNUSTEP_BASE_LIBRARY=1 -fno-strict-aliasing -fexceptions -fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS -D_NONFRAGILE_ABI -pthread -fPIC -Wall -DGSWARN -DGSDIAGNOSE -Wno-import -g -fgnu-runtime -fconstant-string-class=NSConstantString"
EE_BUILD_OPTS="-I/usr/local/include -L/usr/local/lib -lc -lobjc -lgnustep-base -fblocks -fobjc-arc -fobjc-abi-version=3"
alias OBJCC="clang $EE_GNUSTEP_OPTS $EE_BUILD_OPTS"
OBJCC *.m
В ОС OSX программа не завершает работу и просто продолжает работать. Он работал одинаково под GNUstep на FreeBSD, если я не использую ARC. Если я включу ARC, программа немедленно прекратит работу. Я понятия не имею, почему это не работает, только когда включена ARC. Почему он немедленно уходит?
Вот составные версии, которые я использовал:
svn co http://svn.gna.org/svn/gnustep/libs/libobjc2/releases/1.7 libobjc2-1.7 &
svn co http://svn.gna.org/svn/gnustep/tools/make/tags/make-2_6_5 make-2_6_5 &
svn co http://svn.gna.org/svn/gnustep/libs/base/tags/base-1_24_5 base-1_24_5 &
Спасибо за исправление этого. Я буду ждать следующего выпуска. Я также разместил это в списке рассылки, который будет подтвержден как ошибка, но я думаю, что моя почта в настоящее время находится в модерации. – Eonil