43638


よくiphoneアプリ開発をするなら参照するべきものにapple公式ドキュメントが挙げられますが  
そこに書いてあるサンプルコードの文法が全く見慣れないものなんですが  
objective-cを理解しなければ、あのサンプルコードは参考にできないのでしょうか。


CC BY-SA 4.0
2018-04-26T14:07:05.170
43579
2022-05-06T07:42:25.710
2018-05-11T09:36:34.690
3054
27271
question
swift ios objective-c apple
Appleのサンプルコードを参考にするにはObjective-Cの理解が必要ですか？


はじめまして。 iPhoneアプリの作成を目指しておられるようですが。  
大きなハードルは３つ位に別けられると思います。

一つ目がObjective-Cでのサンプルコード

Objective-
Cというのは、Smalltalkという言語のオブジェクト指向の思想をC言語の制御構造と組み合わせた言語です。特に慣れないと読みづらいのが、他の言語では、  
`インスタンス.メソッド(引数1、引数2...)`  
という形で行われる、メソッド呼び出しが、  
`[インスタンス メッセージ（＝メソッド）:引数1 引数ラベル2:引数2..]`  
と記述されることだと思います。  
他の多くの言語では、引数はカンマで区切って列挙するだけですが、  
`引数ラベル:実際の引数`という形で、この変数はこういう意味で渡しているんだと強く意識して書くことを強制されます。ここが読みづらいと思わせてしまう心理的ハードルの高い部分かも知れませんね。  
この読みかえさえ出来れば、Objective-Cでソースを書かないのであれば、最低限の読み解きは可能です

二つ目が、Appleが標準で用意しているフレームワークのリファレンス

一つ目で、Objective-
Cのサンプルソースで、どのインスタンスのどんなメッセージが呼び出されているか？が解っても、それが具体的になにをしているのかを調べなければならないと思います  
私は、これについては、[Dash](https://kapeli.com/dash)という（有償の）リファレンスツールを使っています。  
Appleのドキュメントでも、先にお伝えしたDashでも、フレームワークにどのようなメソッドがあるか？は  
`メソッド名:引数ラベル2:引数ラベル3:`  
という見出しで検索出来るようになっているものが多く、  
１つ目で説明したメソッドの呼び出し方で、呼ばれているメソッドを探し出し、先に述べた用に、引数ラベルをコロン（:）で繋いでいくと、該当するメソッドがリファレンスの中から検索でき、その内容がどのようなものなのかを検索出来ると思います。

三つ目はObjective-Cの問題ではありませんが、言葉の問題

iPhoneやMacのプログラマーは多いとは言いにくく、日本語での情報となると、更に少なくなります。  
このため、英語でのドキュメントでも物怖じせずに読むように努める必要があるかも知れません

見当違いでしたら申し訳ありませんが、Objective-
Cのソースを読み解いて、Swiftでプログラムを記述するのであればという前提で、最低限のObjective-Cの読み解き方を説明してみました。  
これ以上詳しいことを知りたければ、Objective-Cを最低限憶える必要が出てくると思いますが  
これだけ解れば、リファレンスが引けるので、あとはSwiftで頑張ろうと思えて下されば幸いです


CC BY-SA 3.0
2018-04-28T15:51:48.450
43638
2018-04-28T15:51:48.450
14745
43579
answer


私もDashを使ってますが、Xcodeに付属のDeveloper Documentationも充実してきてます。  
ですので、後者を使うことも多いです。  
添付の図の様にsample codeのfilterを掛けて検索するとサンプルコードもヒットします。

図はjsonをキーにサンプルコードを検索してます。

ただXcode13.3.1の環境ではDownloadボタンが機能せず、ボタン上でContext Menuを表示させて、share -> copy
linkと辿ってURLを取得しなければサンプルコードを取得できません。  
僕の環境だけかな？[![画像の説明をここに入力](https://i.stack.imgur.com/zl9hN.png)](https://i.stack.imgur.com/zl9hN.png)


CC BY-SA 4.0
2022-05-06T07:42:25.710
88668
2022-05-06T07:42:25.710
35709
43579
answer