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 互換に変換します。さらにいくつかの変更を行います; グーグルでそれらについて読むことができます)。Xcode を使用して、MRC 互換のプロジェクトを ARC 互換のプロジェクトに変換することもできます。ARC に関する一般的な公式ドキュメントは、Apple Developer にあります。retainreleaseautoreleaseconverting Objective-C code to ARC

ARC をオフにするには、Xcode でプロジェクトに移動し、[ビルド設定] で検索バーを使用して「自動」を検索し、「自動参照カウント」セルをオフにします。

後で MRC についての深い知識が得られたら、ARC に切り替えて学習することをお勧めします。

于 2012-10-28T20:39:25.723 に答える
1

自動参照カウント (ARC) を使用している場合は、リリース、自動リリース、保持を使用しなくなります。これは、コンパイラが処理するためです。

于 2012-10-28T20:37:32.537 に答える