- ベストアンサー
Objective-C NSMutableStringクラスについて
- NSMutableStringクラスでインスタンスを呼び出す方法について詳しく教えてください。
- ビルド時にエラーが発生してしまう場合の解決策を教えてください。
- どこからでもNSMutableStringクラスのインスタンスを呼び出せるようにする方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> @interface ここに、「-(IBAction)testtime:(id)sender;」を記述してください。Interface Builderと連携できません。 > Mixbox=[NSMutableString string]; これはイニシャライザの中に記述しなければなりません。 ただし、UIViewControllerのサブクラスの場合は、「- (void)viewDidLoad」の中に記述します。 そして「retain」するか、「[[NSMutableString alloc] init]」で初期化してください。「[NSMutableString string]」は、autoreleaseになります。autoreleaseにしたインスタンスは、Cの関数、Objective -Cのメソッド内のみで有効と考えてください。 - (void)viewDidLoad { [super viewDidLoad]; mixBox = [NSMutableString string]; [mixBox retain]; } このように訂正して、なおエラーが出るのでしたら、あなたが今回端折ったコードのどこかに問題が潜んでいます。 > どのIBAction型でも呼び出せるようにしたいのですが。 「IBAction」は、型ではありません。Interface Builderが、Actionとして認識するための目印に過ぎません。コンパイル時には、「void」と同義として扱われます。同様に「IBOutlet」は、コンパイル時スペースと同義です。
その他の回答 (2)
- harawo
- ベストアンサー率58% (3742/6450)
> 何がいけないのか教えてください。 質問文に記述されたコードを訂正したもの全体を、記載してください。そうでなければ、こちらからチェックしようがありません。
- harawo
- ベストアンサー率58% (3742/6450)
ヘッダファイルの@interfaceに、NSMutableString *Mixboxを宣言してください。それでクラス内のどこからでも呼び出せるようになります。 ※インスタンス名は、クラス名と区別するため、小文字で始めることがルールになっています。対してクラス名は大文字で始めます。 また、メソッド名も小文字で始めるルールになっているので、「-(IBAction)TestTime:(id)sender」も適切ではありません。 NSMutableStringに限らず、インスタンスは宣言しただけでは生成されていないので、イニシャライザを使って、生成、初期化を最初にしなければなりません。いちばんかんたんなイニシャライザは、「Mixbox = [NSMutableString string];」です。これで、空のテキストからなるMixboxが生成されます。 > self.flowView.text=(@"%@",Mixbox); この行のイコール以降は、「[NSString stringWithFormat: @"%@", Mixbox]」としなければいけませんが、単に「self.flowView.text = Mixbox」とすればいいものを、どうして回りくどい記述をする必要があるのでしょう?
お礼
ルールまで教えていただきありがとうございます。 NSMutableString *Mixboxを@interfaceのあとに宣言を行い そのあと、初期化 Mixbox = [NSMutableString string];を入力したのですが エラーとなります。 何がいけないのか教えてください。
補足
Cの扱い方に馴染んでおり そのような書き方になってしまいます。
補足
すいません。 このように書いてみました。 h @interface FirstViewController :UIViewController { NSMutableString *Mixbox; } m @implementation FirstViewController Mixbox=[NSMutableString string]; -(IBAction)testtime:(id)sender{ NSString *Time=@"ただいまの時間\n "; NSDate *Date=[NSDate date];//時間の設定 NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease]; [formatter setDateFormat:@"yyyy:MM:dd::hh:mm:ss"]; NSString *Str = [formatter stringFromDate:Date]; [Mixbox appendString:Str]; [Mixbox appendString:Time]; self.flowView.text=Mixbox; } どのIBAction型でも呼び出せるようにしたいのですが。