Objective-C学习笔记1--windows+GNUstep环境下不能使用@autoreleasepool?

本文介绍了在GNUstep环境下使用Objective-C编程时遇到的问题及解决方法。主要讨论了由于GNUstep自带的gcc编译器不支持Objective-C 2.0导致无法使用@autoreleasepool指令的情况,并提供了一种替代方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初学Objective-C,在win7上搭建了GNUstep环境,编译了下《Programming in Objective-C》的示例代码,发现报错了:

代码:

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{
     @autoreleasepool {
     NSLog (@"Programming is fun!");
     }
     return 0;
}

编译报错:



改成网上找的另一段代码可以:

#import <Foundation/Foundation.h>

int main ( int argc, const char *argv[]) 
{
     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
     NSLog(@ "\nHello,objective-C!\n" );
     [pool drain];

     return 0;
}

网上查了一下:

iOS 5新推出ARC(Automatic Reference Counting)功能,改进内存管理,使用了ARC则要用@autoreleasepool 代替NSAutoReleasePool;

而GNUstep 带的 gcc 编译器不支持 Objective-C 2.0 ,因此不支持 @autoreleasepool 这个指令。


此问题涉及Objective-C的垃圾回收和编译环境问题,待后续深入研究……



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值