2011-11-11 14 views
0

を設定することはできません私はこのコードが動作するように取得しようとしていますが、変数が設定されている示して任意の出力を得るように見えることはできません。のObjective-Cクラス/オブジェクト変数

#import <Foundation/Foundation.h> 
#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 

答えて

5

ようなものが必要。 thingy *mythingy;thingy *mythingy = [mythingy new];に変更してください。カスタムメソッドを実装している場合は、カスタムメソッドで初期化してください。

+0

ええ、それは完全に動作しますが、私はその新しいAutomatic Reference countingを使用できるようにしたいので、@autoreleasepoolを使用してメモリ管理を無視できるように、単純なプロジェクトの場合) – Moose

+0

それは別の質問であるはずです。ここでそれに答えると、話題にならないでしょう。 (何かがあなたを得るために:http://stackoverflow.com/questions/6385212/how-does-the-new-automatic-reference-counting-mechanism-work)また、それが動作する場合は、2つの答えのいずれかを受け入れる。 – Jef

+1

@Mooseman - これはARCとは関係ありません。どちらの方法でもオブジェクトを割り当てて初期化する必要があります。 ARCはあなたのために魔法のようにオブジェクトを初期化しません。 – jrturton

2


は、あなたはあなたがそれを使用することができます前に、オブジェクト(mythingy)を作成する必要が

mythingy = [[thingy alloc] init]; 
// or 
mythingy = [thingy new]; 
関連する問題