PHPからObjective-Cへ[非公開]
-
03-07-2019 - |
質問
かなり経験豊富なPHP開発者であり、Cについてかなりの知識を持っている(父のNECマイコン16台を使用した分散コンピューティングの実験を書いた)ため、Objective-CとCocoaに移行して、 Mac / iPhoneアプリをPHPプロジェクトの一部と統合します。
「Mac OS X用のCocoaプログラミング」をご覧ください。 Arron Hiilegassの本、私は少しイライラしています。私は例を動作させることができますが、彼はその方法でクラスを使用しているなぜを正確に説明しません(たとえば、intまたはdoubleの代わりにNSNumber)。
Objective-Cを最初に学習する良い本を探しています。私の質問は、良い本は何でしょうか?私は「Objective-C 2.0でのプログラミング」を見ています。そしてそれはかなりまともに見えます。そこからどこに行きますか?その後、Cocoaの本でやり直すべきだと考えています。
また、PHPからObjective-Cへの移行に役立つリソースがインターネット上にありますか? PHPは型指定の緩やかなスクリプト言語であるため、違いがあります。 Obj-CとCocoaでは意味をなさないものがいくつかありますが、なぜNSMutableArrayに整数を入れられないのですか?
とにかく。助けてくれてありがとう! (私は14歳ですので、Qに間違いを犯した場合は気をつけてください。)
解決
「Objective-C 2.0でのプログラミング」を行ったところです。私自身、それはかなり良いです。特にCを使用したことがない場合(または、私のように忘れてしまった場合)、特にお勧めします。
ただし、Appleには優れたドキュメントがあります。オンラインで読むのを気にしないなら、私は彼らの Getting Started with Cocoa ページ。
他のヒント
例を動作させることはできますが、そのようにクラスを使用している理由を正確に説明していません(たとえば、intまたはdoubleの代わりにNSNumber)...
Obj-CとCocoaには意味をなさないものがいくつかあります。なぜNSMutableArrayに整数を入れられないのですか?
NSNumber
は、 int
や double
などのプリミティブ型よりもはるかに便利な型で、よく使用されますCocoaでプログラムを作成すると、他のオブジェクトと一緒に実行されます。
たとえば、数値を値としてサイズ変更可能な配列( NSMutableArray
など)または連想配列( NSDictionary
)、数値プリミティブ( int
、 double
など)をシリアライズ可能、またはアーカイブ可能なオブジェクト— NSNumber
。
プリミティブは、 NSNumber
とは異なり、シリアル化できません。これは、プリミティブが「Core Foundation」の基本セットに含まれていないためです。タイプ( NSNumber
、 NSArray
、 NSString
など)は、Appleが利用できるようにするために懸命に取り組んでいます。
また、 NSNumber
を使用すると、多くの便利なボーナスメソッドも無料で取得できます。たとえば、 [myNumber stringValue]と入力するだけで、数字を文字列にすばやく変換できます。
。
または、 NSNumber
を何かの価格(" $ 1.23")として扱っている場合は、 NSNumberFormatter
に数値の演算が期待どおりの形式の結果を与えることを確認してください(たとえば、2つの価格値を追加すると、見返りに通貨値を取得することが期待されます)。
これは、 int
または double
変数を使用できない、または使用すべきでないと言っているわけではありません。しかし、多くの場合、 NSNumber
の方が優れたオプションであることがわかります。つまり、より少ないコードを記述し、「無料」で多くの機能を得ることができます。
私の経験では、Obj-CとCocoaTouchの学習にはインターネットドキュメントが十分に役立つことがわかりました。私の進行は次のようになりました:
1)iTunesでApple Devビデオを見る(無料)。
2)入門を読み、 iPhoneアプリケーションプログラミングガイド。
3) ObjでOOPを読む-C 。
4)詳細:ココア基礎、 Objective-C入門、ココアプラクティス。
5)簡単なチュートリアルを行います。
IMO:必要な情報はすべてApple Dev:iPhoneサイトにあります。お金を節約し、本を買わないでください。 「なぜ」がわからない場合ガイドまたはチュートリアルのいずれかで何かが行われ、Googleの他のソースとすぐに相互参照します。
ここでの学習曲線はかなり大きいことを覚えておく必要があります。それは私にとってであり、大学で毎日このようなことを勉強しています。だから、それに固執し、スマートな方法で読んでください(あなたが知っているものをスキム)。私が自分で見ているのは、iPhoneの仕組みを理解し、データの流れを知っている場合、そのためのプログラミングは主に構文の問題です。
PHPはObjective-Cとは大きく異なります。さらに、インターネットのコンテキストでのPHPでのプログラミング問題の解決方法は、iPhoneのコンテキストでのObj-Cでのプログラミング問題の解決方法とは大きく異なります。このため、新しい視点から、学生/学習者としてiPhoneにアプローチしたいと考えています。時間をかけて、オブジェクト指向プログラミングとベストプラクティスに集中してください。これは今後数年間あなたを祝福します。
-バッファロー
また、質問に答えるには:
Objective-Cは、Cの拡張機能として構築されたオブジェクト指向言語です。
このように、プリミティブ型(intやdoubleなど)とオブジェクトの両方を提供します。
NSNumberは、数値とその数値に対する操作(メソッド)を表すObjective-Cクラスです。 NSNumberを数値プリミティブ型よりも使用する利点は、オブジェクト指向で使用できることです(メッセージを送信したり、「プロトコル」で機能を拡張したり、継承したり、オブジェクトなどを期待するメソッドに渡します。
NSMutableArrayの場合、これは配列のような機能を提供するクラスです。これは、Objective-Cオブジェクトタイプ(NSObjectタイプオブジェクトとそれらを継承するオブジェクトのコンテナ)で動作するように設計されており、これが整数を含めることができない理由です。ただし、整数を表すObjective-CクラスであるNSIntegerを含めることはできます。
個人的には、最初に http://のAppleリファレンスからObjective-Cを学習しようとします。 developer.apple.com/library/mac/navigation/ からそこからココアに進みます。
私は同様の船に乗っていて(PHPはObjective-Cに移行しました)、最良のプロセスはプロジェクトに飛び込むことでした。私もヒレガススの本を読みましたが、それは良いスタートでしたが、言語を知る唯一の方法は明確な目的を持ってただ混乱することです。
苦痛ですが、動作します。コーヒー、API、およびクリネックス。
編集:あなたの投稿の最後の部分を読んだところ、14歳だったことがわかりました。おそらくコーラでコーヒーを切り替えてください:)
あなたがどこから来たとしても私のお気に入りのObjective-Cチュートリアルは、iOSプログラミングに関するスタンフォードのiTunesUコースです。教授は、他の本やオンラインチュートリアルから物事を実際に見ています。