【Console Application】外部関数 32【学習記】
打鍵数多くなる使い方の関数をライブラリ化する話🤤
Q.
すぐ終わるって聞いたけど?
A.
そんなわけないじゃん🤪
というかローカルのみの git の挙動が(主に xcode のせいで)おかしくて消えたりやり直したりで無駄に時間取られてストレス😞
→前回参考にした記事は stringWithFormat がさも va_list に対応してそうな記述だったが実際は対応してなかった😞
→ stringWithFormat で押し通したい場合は va_arg 等で型を全部変換する必要が有る
→ va_list をそのまま使いたいなら initWithFormat の arguments メッセージで対応可能
void myNSStringPrintf(NSString *format,...)
{
va_list args;
va_start(args, format);
NSString *str = [[NSString alloc] initWithFormat:format arguments:args];
va_end(args);
//
printf("%s\n",[str UTF8String]);
}
# .gitignore メモ
DerivedData/
.gitignore
.DS_Store
*.xcodepro/xcuserdata/
*.xcodepro/project.xcworkspace/
#Objective_C
#NSString #stringWithFormat #initWithFormat
#gitignore
#学習記
動作確認
さてそれじゃ、打鍵数の多い出力関数の置き換えをして動作確認しようかな🤤
まずライブラリビルド👇
あっ作り直したから prefix いじってない🤪
Xcode 4.2 / iOS開発でスタティックライブラリを利用する
https://ndevmemo.blog.shinobi.jp/%E9%96%8B%E7%99%BA/xcode%204.2%20-%20ios%E9%96%8B%E7%99%BA%E3%81%A7%E3%82%B9%E3%82%BF%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B
なんで helloWorld 側のヘッダはビルドする前にエラーになるんだろうと思ってちょっと探していたらこんなのが出てきた🤔
何か変わるのかなって思ってヘッダの設定 public に変えてビルドしたら
ヘッダが纏まってコピーされてる🤪
なんだ、やっぱりヘッダ集める機能有るんじゃん🤤(知らないだけ
これなら一々各フォルダからコピーしなくて済む☺️
型違うよって怒られた🙄
@ を外すとエラーは消える😞
そりゃまぁ宣言が const char *format だししょうがない🙄
では NSString に変更して
@ を復活して
Arguments のとこの表示ヨシ👈🤪
🙄🙄🙄
for の所が死んでるのかな?
autoreleasepool の記述が悪さをしてるっぽい気がする🤔
🙄🙄🙄
よく見ると最初に1箇所だけ入れ替えて試した Arguments の隣の個数表示もおかしな事になってるねこれ…🙄
感じからすると、中のポインタのアドレス値をそのまんま表示してる…のかなこれは🙄
Objective-Cで可変引数
https://tea-leaves.jp/home/ja/article/1365947182
可変引数を別のメソッドに渡す。
…(中略)…
可変引数を直接、initWithFormat:argumens:に渡して呼び出すことができます。
stringWithFormat は
va_list に
対応してない!!
🙄🙄🙄
ふー、なんとかなった🤤
ちょっとだけ autoreleasepool を賢く変更🤤(自分が賢いとは言ってない
次回は
やっと型とか文法とかの基礎見て行けそう🤤