タグ付けされた質問 「objective-c」

Objective-cは、非常に動的なメッセージベースのオブジェクト指向言語であり、Cのスーパーセットであり、主にAppleのMac OS XおよびiOSプラットフォームのプログラミングに使用されます。

5
これらの比較で、SwiftはどのようにObjective-Cよりもずっと速くできますか?
Apple はWWDC14で新しいプログラミング言語Swiftを発売しました。プレゼンテーションでは、Objective-CとPythonのパフォーマンスを比較しました。以下は、これらのスライドの1つで、複雑なオブジェクトの並べ替えを実行するこれら3つの言語の比較の写真です。 RC4暗号化アルゴリズムを使用したパフォーマンス比較について、さらに驚くべきグラフがありました。 明らかにこれはマーケティングの話であり、彼らはこれがそれぞれにどのように実装されているかについては詳しく説明しませんでした。私は私が疑問に思うままにします: 新しいプログラミング言語はどのように高速化できますか? Objective-Cの結果は不良なコンパイラが原因ですか、Objective-CではSwiftよりも効率が悪いものがありますか? 40%のパフォーマンス向上をどのように説明しますか?ガベージコレクション/自動化された参照制御は、追加のオーバーヘッドを生成する可能性があることを理解していますが、これだけですか?

5
Objective-C開発用のClang警告フラグ
CおよびObjective-Cプログラマーとして、私はコンパイラ警告フラグに少し偏執的です。 私は通常、使用しているコンパイラの警告フラグの完全なリストを見つけて、それをオンにしない本当に正当な理由がない限り、それらのほとんどをオンにします。 私は個人的に、これにより実際にコーディングスキルが向上し、コードの移植性が向上し、いくつかの問題を防ぐことができると考えています。 私の意見では、あなたが経験豊富なプログラマーであっても、毎日の良い学習ツールでもあります。 この質問の主観的な部分については、このトピックについて他の開発者(主にC、Objective-C、C ++)を聞くことに興味があります。 あなたは実際に、物足りなさの警告などのようなものに関心がありますか?はい、またはいいえの場合、なぜですか? Objective-Cについては、最近、GCCではなく、LLVMツールチェーン(Clangを使用)に完全に切り替えました。 私の製品コードでは、通常、この警告フラグを設定します(明示的に、それらの一部が-Wallでカバーされている場合でも): -壁 -Wbad-function-cast -Wcast-align -W変換 -ステートメント後の宣言 -Wdeprecated-implementations -ウェクストラ -Wfloat-equal -Wformat = 2 -Wformat-nonliteral -Wfour-char-constants -Wimplicit-atomic-properties -ミッシングブレース -ミッシング宣言 -欠落フィールド初期化子 -欠落フォーマット属性 -ミッシングノーリターン -ミッシングプロトタイプ -ネストされた外部 -改行-eof -Wold-style-definition -Woverlength-strings -かっこ -ポインターポインター -冗長宣言 -戻り型 -Wsequence-point -Wshadow -Wshorten-64-to-32 -Wsign-compare -署名変換 -Wstrict-prototypes -Wstrict-selector-match -Wswitch -Wswitch-default -Wswitch-enum -Wundeclared-selector -初期化されていない -不明なプラグマ …

3
プロパティセッターにロジックを追加することは悪い習慣と見なされますか?
プロジェクトに飛び込んだところ、他の開発者が合成プロパティのセッターに多くのロジックを追加していることがわかりました。私はこれがどのように機能するかを理解していますが、プログラムの流れを理解するのが難しくなると思います。コードを読んでいる間、表示されるたびにself.something = whatever、somethingのセッターがオーバーライドされているかどうかを常にチェックしています。 このトピックに関するあなたの意見は何ですか?これは、悪いアーキテクチャのサインであるか、精巧なソリューションであると思いますか? 関連するリンク/ソースがある場合、これについてもっと読んでうれしいです。良いGoogleの結果を得るのはあまりにも難しいので、ここでも尋ねることにしました。 答えてくれてありがとう、あなたがタグを見なかった場合の客観的なCについて話していることに注意してください(これは私が推測する言語固有の問題ではないはずですが)。

5
MonoTouch vs Objective-C for iPhone / iPod / iPad開発[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 6年前に閉鎖されました。 .Netの経験があり、iPhone / iPod / iPad用に開発したい人にとって、Objective-Cを学ぶ価値はありますか?MonoTouchは良い選択肢ですか?MonoTouchを使用する場合とObjective-Cでコーディングする場合のトレードオフにはどのようなものがありますか?
25 c#  .net  iphone  objective-c 

2
Objective-CがCocoa環境を超えて広く使用されないのはなぜですか?
Objective-Cは、優れたオブジェクト指向、シンプルさ、優雅さ、および(Cのスーパーセットとして)低レベルの機能を備えています。多くの人がGoで探してみようとするC ++のシンプルで現代的な代替のように思えるかもしれません。しかし、Cocoaおよびpost-NextSTEP環境で使用されているだけであり、この場合でも、最適な選択というよりも歴史的な理由で負担と見なされます。 なぜそれほど広く使用されていないのですか?その問題は何ですか?

5
成功:/失敗:ブロックvs完了:ブロック
Objective-Cのブロックには2つの一般的なパターンがあります。1つはsuccess:/ failure:ブロックのペアであり、もう1つは単一のcompletion:ブロックです。 たとえば、非同期でオブジェクトを返すタスクがあり、そのタスクが失敗する可能性があるとしましょう。最初のパターンは-taskWithSuccess:(void (^)(id object))success failure:(void (^)(NSError *error))failureです。2番目のパターンは-taskWithCompletion:(void (^)(id object, NSError *error))completionです。 成功:/失敗: [target taskWithSuccess:^(id object) { // W00t! I've got my object } failure:^(NSError *error) { // Oh noes! report the failure. }]; 完了: [target taskWithCompletion:^(id object, NSError *error) { if (object) { // W00t! I've got my object …

2
Swiftがセミコロンを必要としないのはなぜですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 私は通常c#またはObjective-Cのいずれかでコーディングし、最近Appleの新しいプログラミング言語であるSwiftを習得しました。 私が最初に気づいたのは、Swiftで行を終了するためにセミコロンを追加する必要がないことですが、少なくともテストしたことからすれば、コンパイラに干渉しません。 私が書くとき: int someNumber = 0; Objective-Cでは、セミコロンはプログラムに、行が終わって次の行に落ちないことを伝えます。 Swiftでは、変数を宣言できます var someNumber:Int = 5 セミコロンを追加しないと、システムはこれが行の終わりであることを認識します。 一部の言語でこれを行うことができ、他の言語ではできないことは何ですか?最後にセミコロンを追加する均一なシステムを維持してみませんか?


7
継続的インテグレーション:どの周波数ですか?
私は常に各コミットの後にビルドを開始しましたが、この新しいプロジェクトでは、アーキテクトは「15分ごとに1つのビルド」に頻度を変更するように頼みました。コミットごとに構築する」。 まず、いくつかの詳細: Objective-C(iOS 5)プロジェクト 10人の開発者 各ビルドには実際に約1分かかり、ビルドと単体テストが含まれます。 統合サーバーはMac Miniであるため、ここでは計算能力は実際には問題になりません。 JenkinsとXCodeプラグインを使用します 私の主張は、コミットするたびにビルドすれば、他の開発者を頻繁に煩わせることなく、今何が間違っているかをすぐに確認し、エラーを直接修正できるということです。さらに、この方法でテスターはUTエラーに悩まされることが少なくなります。彼の主張は、開発者は「ビルドエラー」メール(最初の壊れたビルドのみにメールを送信するように構成できるため、完全に真実ではない)であふれ、頻度が適切な場合にメトリックを実行できないというものでしたビルドの数が多すぎます。 だから、これについてあなたの意見は何ですか?

3
Massive View Controller-IOS-ソリューション
私はすべての新しいiOS開発者に次の問題があると確信しています。 これは、2つの基本的な一般的な画面の表示方法です。 1)フォーム画面: 2)テーブルビューコントローラー画面 これまでに、2つの異なるソリューションについて読みました。 最初のソリューション:https://bendyworks.com/single-responsibility-principle-ios/。これは通知に基づいており、View Controllerを(意図)View Modelから完全に分離するため、View Controllerのコードが削減されます。Go-To構造と同様に、コードを壊すという欠点があると思います。次のようになります。 2番目のソリューションは、混雑した同じView Controllerを保持します(ボタンアクションはVC内で実行されるなど)。ただし、TPKeyboardAvoiding、BlocksKitなどのライブラリ、またはそれらのほとんどはカテゴリに基づいたソリューションを使用します。この2番目のソリューションでは、コードは大幅に削減されますが、View Controllerには依然として多くの責任があります。 これらのソリューションについてどう思いますか?どちらが良いですか?より良いものはありますか?
16 mvc  ios  objective-c 

2
Objective-Cのメソッドオーバーヘッドにより、「多数の小さなメソッド」の設計アプローチはお勧めできませんか?
Clean Codeの Bob Martinが推奨しているように、私は一般的に小さなメソッドを使用することを好みます。また、Objective-Cの内部についても十分に読んで、メッセージのディスパッチがどのように機能するかについて少なくともある程度理解しました(これについてはbbumsシリーズが特に有益です)。 時期尚早な最適化の懸念にもかかわらず、Objective-cがobjc_msgSendで実行するすべての作業が、実用的な観点から、Objective-Cプロジェクトには「多くの小さなメソッド」アプローチが不適切であるかどうかを知りたいと思います。 経験的な調査結果は特に歓迎します(多分私はいつか自分でテストをセットアップするでしょう)。大規模なObjective-Cプロジェクトを書いた人からの経験も素晴らしいでしょう。 明確化 質問の一般的な口調は意図的です。特定のアプリのパフォーマンスチューニングについては質問していません(そのため、SOではなくここで質問します)。Objective-Cの言語特性が特定の設計アプローチを妨げているかどうかについては詳しく説明しません。Appleや他の関係者(githubなど)から見たコードの多くは大きなメソッド(およびクラス)に向かう傾向があることに気付きましたが、これは言語のために忍び込んだバイアスかどうか疑問に思っています自体。もちろん、間違ったコードを読んでいた可能性があります。または、存在する場合は、傾向をもたらした技術的要因ではなく文化的要因である可能性があります。 (価値があることのために、私は現在Objective-Cを書いており、小さなメソッドを使用しています) さらなるリクエスト 与えられた両方の答えに同意します。さらにもう1つ欲しいのは、誰かが素敵な短いメソッド(および小さなクラス)を使用する(願わくば実質的な)オープンソース(またはそうでなければ見える)のObjective-Cコードベースを指し示すことです。Objective-Cには、たとえばフィットネスソースと比較するものはまだありません。

3
Objective Cでプログラミングするとき、人々はconstを多く使用しますか?
関連:「 'NSString *'型のパラメーターに 'const NSString *'を送信すると、修飾子が破棄されます」という警告 時々、私はそれが便利だと思います。テーブルを渡す必要があり、テーブルの内容が変わらないことを確認したい場合があります。 しかし、ほとんどのObjective-Cプログラムのサンプルでは、​​私は決して見ませんconst。私の質問はなぜですか?

7
不変性を回避する
私はオブジェクト指向プログラミングに慣れていないので、把握に時間がかかっている概念の1つは不変性です。昨夜電球が消えたと思うが、確認したい: 不変オブジェクトを変更できないというステートメントに出くわすと、たとえば次のようなことができるため困惑します。 NSString *myName = @"Bob"; myName = @"Mike"; そこで、不変型NSStringのmyNameを変更しました。私の問題は、「オブジェクト」という言葉がメモリ内の物理オブジェクト、または抽象化「myName」を指すことがあるということです。前者の定義は、不変性の概念に適用されます。 変数については、不変性のより明確な(私にとって)定義は、不変オブジェクトの値は、メモリ内の位置、つまり参照(ポインタとも呼ばれる)を変更することによってのみ変更できるということです。 これは正しいですか、それとも私はまだ森の中で迷っていますか?

1
iOS / OSXオープンソースプロジェクトの命名規則
常にではありませんが、ほとんどの場合、作成者の姓と名の頭文字で始まる名前のiOSまたはMac OS Xオープンソースプロジェクトがあります。プロジェクトがNick Leblancによって作成される場合、プロジェクトはとして読み取られNLMyProjectます。 例: Rune MadsenによるRMSwipeTableViewCell、 Ezequiel BecerraによるEBCardCollectionViewLayout、 SDiPhoneVersionセバスチャンDobrincuすることにより、 Leo NatanによるLNNotificationsUI。 それはどこから来たのですか?ある人が最初にこのように書いて、それから他のみんながそれに続きましたか? Appleガイドラインでさえ、それについて何も見つけることができませんでした。そのイディオムはどこにでも書かれていますか?

1
iOSアプリ開発用のコードの整理
私はiOSプラットフォーム用のアプリを開発してきましたが、これまでずっと、ファイル(.h、.m、.mm)を整理するというひどい仕事をしてきたことに気づきました。iOSプロジェクトのファイルの整理に関して、業界標準やベストプラクティスはありますか? 私のファイルには、カスタムクラス(View Controllerの横)、カスタマイズされたView Controller、サードパーティのコンテンツ、iOS 5.0以降でのみ動作するコード、以前のバージョンで動作するコードが含まれています。私が探しているのは、他の人(または今後数年のうちに私)がこれを見て、そこにある複数のファイルで迷子にならないように、物事を整理するソリューションです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.