objective-cでの関数の使い方

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
伊藤加奈

objective-cでの関数の使い方

#1

投稿記事 by 伊藤加奈 » 10年前

objective-cでの関数の使い方を勉強しております。
戻り値がある関数の作り方がよくわかりません。
引数に与えられた文字から別の文字を戻り値に出す様な関数を作ってみました。
しかし下記のソースでエラーがでてしまいます。
どこが悪いか指摘して頂けないでしょうか?

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** initialization method -initWithCharactersNoCopy:length:freeWhenDone: cannot be sent to an abstract object of class NSCFString: Create a concrete instance!'
*** Call stack at first throw:

-(NSMutableString*)returnImagePath:(NSMutableString*)string{

NSMutableString *rStr = [NSMutableString string];

if( [string isEqualToString:@"白"] ) [rStr initWithString:@"shiro"];
else if( [string isEqualToString:@"赤"] ) [rStr initWithString:@"aka"];
else [rStr initWithString:@"none"];

return rStr;
}
NSMutableString *col1 = [NSMutableString string];
[col1 setString:@"赤"];
[col1 setString:[self returnImagePath:col1]];

アバター
Justy
副管理人
記事: 122
登録日時: 10年前
住所: 神奈川県

Re: objective-cでの関数の使い方

#2

投稿記事 by Justy » 10年前

伊藤加奈 さんが書きました: if( [string isEqualToString:@"白"] ) [rStr initWithString:@"shiro"];
else if( [string isEqualToString:@"赤"] ) [rStr initWithString:@"aka"];
else [rStr initWithString:@"none"];
 allocと同時ならともかく、後から文字列を入れるなら initWithStringではなく setStringを使いましょう。

伊藤加奈

Re: objective-cでの関数の使い方

#3

投稿記事 by 伊藤加奈 » 10年前

修正してみた所できました!!
戻り値の使い方は間違えていなかったのですね。
そんなミスだったとは気がつきませんでした。
ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る