0

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]」行の後に「No visible @interface for 'Fraction' はセレクター 'free' を宣言しています」です。本を一通り読んだのですが、何が問題なのかわかりません。このエラーについては言及されていません。これは何を意味し、どうすれば修正できますか?

質問する前に、ここでスタックに関するいくつかの同様の質問も見ましたが、それらの問題は私が遭遇しているエラーではないようです。助けてください。ありがとう!

4

2 に答える 2

1

Objective C では、割り当てられたオブジェクトのインスタンスを解放するために free を使用しません。free は、「malloc」を呼び出したときにのみ使用されます。

Objective C では、[MyClass new] は malloc と同等ではありません。

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

このオブジェクトは、次を使用して「解放」されます

[anInstance release];

乾杯

于 2012-08-08T20:30:05.353 に答える
0

オブジェクトの割り当てと解放の規則が異なるため、これは、Cocoa 以外、Apple 以外の Objective-C のバリアントのように見えます。Xcode は Apple 独自の (Cocoa) 規則を厳密に適用するため、エラーが発生します。

Objective-C を純粋な形で学ぶことで脇道にそれることなく、iOS (または Mac) プログラミングを学びたいと思っているなら、別の本を試してみることをお勧めします。

于 2012-08-08T20:37:35.007 に答える