gpt4 book ai didi

objective-c - Objective C 中使用 free 时出错

转载 作者:行者123 更新时间:2023-12-03 17:56:54 25 4
gpt4 key购买 nike

我正在读 Stephen Kochan 写的一本名为“programming in Objective-c”的书。我一直在阅读它,并将书中的一些代码直接复制到我的程序中。我遇到的唯一问题是在对象上使用 free 。我的代码如下(我很抱歉将整个程序放入其中,但我是一个菜鸟,所以很有可能我在程序的早期做错了一些事情):

//
// main.m
// prog1
//
// Created by Brent Blackwood on 8/7/12.
// Copyright (c) 2012 Brent Blackwood. All rights reserved.
//

#import <stdio.h>
#import <objc/Object.h>

//------- @interface section -------

@interface Fraction: NSObject {
int numerator;
int denominator;
}

-(void) print;
-(void) setNumerator: (int) n;
-(void) setDenominator: (int) d;

@end

//------- @implementation section -------

@implementation Fraction;

-(void) print{
printf (" %i/%i ", numerator, denominator);
}

-(void) setNumerator: (int) n {
numerator = n;
}

-(void) setDenominator: (int) d {
denominator = d;
}

@end

//------- program section -------

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


// Create an instance of a Fraction

Fraction *myFraction = [Fraction new];

// Set fraction to 1/3

[myFraction setNumerator: 1];
[myFraction setDenominator: 3];

// Display the fraction using the print method

printf ("The value of myFraction is:");

[myFraction print];
printf ("\n");
[myFraction free]; // ************---This is the line giving the error.---***********


return 0;

}

我收到的错误是“[myFraction free]”行之后“没有可见的@interface for 'Fraction'声明选择器'free'”。我翻遍了书,不明白问题出在哪里。它没有提到这个错误。这是什么意思以及如何解决它?

在我提问之前,我还在堆栈上查看了一些类似的问题,但他们的问题似乎不是我遇到的错误。请帮忙。谢谢!

最佳答案

在 Objective C 中,不使用 free 来释放已分配的对象实例。 free 只能在调用“malloc”时使用。

在 Objective C 中 [MyClass new] 不等同于 malloc,它等同于

MyClass *anInstance = [[MyClass alloc] init];

使用以下方法“释放”该对象

[anInstance release];

干杯

关于objective-c - Objective C 中使用 free 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11872568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com