0

我需要一些帮助,我是 Objective-C 的初学者,我尝试编写我的第一堂课,但不幸的是它没有用。这是我的代码

#import <Foundation/Foundation.h>
@interface Fraction :NSObject{
    int numerator ;
    int demoniratoe ;
}
-(void) print;
-(void) setnumerator: (int) n;
-(void) setdemoniratoe: (int) b;

@end

@implementation Fraction
-(void) print
{
    NSLog(@"%i/%i",numerator,demoniratoe);
}
-(void) setnumerator: (int) n{
    numerator = n;
}
-(void) setdemoniratoe: (int) b{
    demoniratoe = b;
}

@end
int main(int argc, const char * argv[])
{

@autoreleasepool {

    Fraction *myfraction;
    myfraction = [Fraction alloc];
    myfraction = [Fraction init];

    [myfraction setnumerator:1];
    [myfraction setdemoniratoe:3];

    NSLog(@"The value of Fraction is :");
    [myfraction print];
    [myfraction release];

}
    return 0;
}

错误消息位于 [myfraction release] 版本不可用 我使用 XCode 版本 4.5

4

2 回答 2

2

由于较新版本的 Xcode 假定您使用自动引用计数 (ARC),因此他们设置编译器来使用它,因此编译器会抱怨您尝试手动管理内存。

解决方案:要么关闭 ARC(我建议您作为初学者这样做,因为您应该真正了解手动内存管理 (MRC) 的工作原理!)或将您的代码转换为 ARC 兼容的,即删除所有retain,releaseautorelease消息(和进行更多更改;您可以通过谷歌搜索了解它们converting Objective-C code to ARC)。您还可以使用 Xcode 将您的 MRC 兼容项目转换为 ARC 兼容项目。关于 ARC 的一般官方文档可以在Apple Developer 上找到。

要关闭 ARC,您可以在 Xcode 中转到您的项目,然后在 Build Settings 中,然后使用搜索栏搜索“Automatic”并关闭“Automatic Reference Counting”单元格。

稍后,当您对 MRC 有深入了解时,您可以(并鼓励您)切换到并学习 ARC。

于 2012-10-28T20:39:25.723 回答
1

您正在使用自动引用计数 (ARC),然后您不再使用 release、autorelease、retain,因为编译器会为您处理这些问题。

于 2012-10-28T20:37:32.537 回答