Objective-Cはクラス/オブジェクト変数を設定できません

私はこのコードを稼働させようとしていますが、変数が設定されていることを示す出力が得られないようです。

#import 
#import "thingy.h"

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

@autoreleasepool {

thingy *mythingy;

    [mythingy setMass:75.00];
    [mythingy setTime:5.00];

    NSLog(@"mass of mythingy = %f kg", [mythingy mass]);
    NSLog(@"time of mythingy = %f sec", [mythingy time]);

    }
return 0;
}

これは私が得ている出力です:

mass of mythingy = 0.000000 kg
time of mythingy = 0.000000 sec

私も@autoreleasepool(ARC)を使用しないようにしました。コードは以下のようになりましたが、前と同じ出力で表示されます:

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    thingy *mythingy;

    [mythingy setMass:75.00];
    [mythingy setTime:5.00];

    NSLog(@"mass of mythingy = %f kg", [mythingy mass]);
    NSLog(@"time of mythingy = %f sec", [mythingy time]);

[mythingy release];
[pool drain];

更新:

さて、私は以前のコードを取って、これは今のように見えて動作するラインを追加しましたが、私はARCを使いたいのでイライラしています!!

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
thingy *mythingy = [[thingy alloc]init];

    [mythingy setMass:75.00];
    [mythingy setTime:5.00];

    NSLog(@"mass of mythingy = %f kg", [mythingy mass]);
    NSLog(@"time of mythingy = %f sec", [mythingy time]);

[mythingy release];
[pool drain];

このコードの出力:

mass of mythingy = 75.000000 kg
time of mythingy = 5.000000 sec
0

2 答え

それを使用するには、オブジェクト(mythingy)を作成する必要があります。 thingy * mythingy;thingy * mythingy = [mythingy new]; に変更してください。

5
追加された
うん、それは今、tottally作品が動作しますが、私はその新しい自動参照カウントを使用することができるようにしたい、私は@autoreleasepoolを使用することができ、メモリ管理を無視することができますので、 )
追加された 著者 Moose,
@jrturton - 私はいくつかのドキュメント(非常に少量)を先に読んでいて、ARCが実際に魔法のようにオブジェクトを初期化してリリースするという印象を受けました。これが私の心の重要な信念であった理由は、私がARCをオンにして割り当てや初期化、解放、コピー、または新しいポイントのコピーをしようとすると、それを行うには。
追加された 著者 Moose,
@Mooseman - これはARCとは関係ありません。どちらの方法でオブジェクトを割り当てて初期化する必要があります。 ARCはあなたのために魔法のようにオブジェクトを初期化しません。
追加された 著者 jrturton,
それはもう一つの疑問です。ここでそれに答えると、話題にならないでしょう。 (何かがあなたを得るために: stackoverflow.com/questions/6385212/… )また、それが動作する場合は、2つの答えのいずれかを受け入れる。
追加された 著者 Jef,

あなたは何を割り振ったのですか?
あなたは次のようなものが必要です

mythingy = [[thingy alloc] init];
// or
mythingy = [thingy new];
2
追加された