- ベストアンサー
objective-C(Xcode)に関する質問
- objective-C(Xcode)に関する質問があります。新しいプロジェクトを作成し、クラスを追加する方法を教えてください。
- エラーが発生しているコードを確認しましたが、問題は特定できませんでした。
- objcクラスを使用する際に注意することはありますか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> URLは下記の通りです。 リンク先の中の「CClasses/CalcViewController.m」。 メソッド「- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil」に記述されている、「_calculator = [Calculator new];」。 その「new」が、インスタンス生成+初期化メソッドです。 詳しくは、NSObjectのリファレンスで、クラスメソッド「new」を調べてください。 ※私が勉強したサンプルコードで、newを使っているのは、珍しいです。ほとんどくそまじめに「[[ClassName alloc] init]」と記述しています。そもそもinitで初期化するケースが少なく、「[[NSView alloc] initWithFrame: ~]」のような、クラス独自の初期化メソッドを使っているからだと思いますが……
その他の回答 (2)
- harawo
- ベストアンサー率58% (3742/6450)
> サンプルコード(calculator クラス)にはこの記述がなかったのですが、 > そのわけはなぜでしょうか。 そのサンプルコードを見ないと、なにも答えられません。 Apple提供のサンプルコードなら、Appleのデベロッパー向けサイトからすべてダウンロード可能なので、探し出して、URLを記述してください。 ※allocしたインスタンスは、どこか不用になった時点でreleaseしてください。あるいはautoreleaseしてください。
お礼
すみません。 URLは下記の通りです。 https://developer.apple.com/iphone/library/samplecode/iPhoneUnitTests/Introduction/Intro.html もう少しお教えいただければ幸いです。
- harawo
- ベストアンサー率58% (3742/6450)
インスタンスtcが生成されてません。 allocで生成し、initで初期化しないと、インスタンスは機能しません。 ただ「TestClass *tc;」と宣言するだけでは、だめです。 (ほかにも、怪しいコードがあるんですが……)
お礼
push関数に以下のコードを追加しました。 tc = [[TestClass alloc]init]; とりあえず、代入はできました。 ありがとうございました。 サンプルコード(calculator クラス)にはこの記述がなかったのですが、 そのわけはなぜでしょうか。 (良く構造から見てみると、私のと違うのはわかりましたが・・・)
補足
早速の回答ありがとうございました。 サンプルコードを確認してみます。
お礼
早速調べてみます。 ありがとうございました。