問題タブ [objective-c-literals]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
7038 参照

objective-c - @"" NSNumber の文字列型リテラル

Objective C での文字列リテラルの省略形の@"string"表記法が気に入っています。sで同様の動作を得る方法はありますNSNumberか? 私はもっ​​と番号を扱うので、[NSNumber numberWithWhatever:]どこにでも電話をかけるのはとても面倒です。マクロを作成しても機能しますが、それを行う最善の方法についての私の知識は限られています。

0 投票する
4 に答える
61834 参照

objective-c - Xcode 4.4 のリリース ノートに記載されている「Objective-C リテラル」の詳細は何ですか?

Xcode 4.4 のリリース ノートを読んでいて、次のことに気付きました。

LLVM 4.0 コンパイラ

Xcode には、次の新しいObjective-C 言語機能を含む、Apple LLVM Compiler バージョン 4.0 が含まれるようになりました: [...]
- Objective-C リテラル: NSArray、NSDictionary、および NSNumber のリテラルを作成します。

この機能に興味があります。リテラルがどのように機能し、 、、およびNSStringでどのように使用できるかは、私には完全には明らかではありません。NSArrayNSDictionaryNSNumber

詳細は?

0 投票する
2 に答える
26953 参照

objective-c - Objective-Cにはリテラル辞書または配列構文がありますか?

次のような vararg メソッド呼び出しを使用して、NSArray (および NSDictionaries/NSNumber) を作成することは常に可能でした。

これらは、LLVM と Clang の新しい改善でインライン リテラルを使用して作成できますか?

0 投票する
2 に答える
2715 参照

objective-c - 新しい Clang Objective-C リテラルをカスタム クラスにリダイレクトできますか?

のオーバーロードは@危険な領域に足を踏み入れ始めていますが、Clang 3.1 での新しい Objective-C リテラルの追加が気に入っています。残念ながら、新しいリテラルは私にはあまり役に立ちません。コードが AppKit とやり取りする必要がある場合を除いて、私は独自のカスタム フレームワークを優先して Foundation クラスの使用をほとんどやめました (さまざまな理由で、そのほとんどは、使用されるメモリ割り当てパターンを直接制御する必要があるためです)。オブジェクトによって)。

新しく作成されたオブジェクトをカスタム クラスとして渡すために、いつでもランタイムのトリックを使用できます (これは、Apple 以外の GCC ランタイムのみが-fconstantstring=classフラグをサポートするため、文字列オブジェクト リテラルで既に行う必要があることです) が、これはハックです。せいぜい、最初から同等の Foundation クラスを置き換えることによって得たすべての利点を捨ててしまいます。

文字列オブジェクト リテラルとは異なり、Clang が実装する新しいリテラルは実際には定数クラスではありません (メモリ レイアウトがハードコーディングされている場合)。代わりに、適切なメッセージがそれぞれのクラスに送信され、実行時に新しいオブジェクトが作成および初期化されます。オブジェクトを自分で作成した場合と結果は変わりません。理論的には、使用されるクラスと新しいリテラルによって呼び出されるメソッドがハードコードされていないことを意味します。実際には、私自身のカスタム クラスとメソッドを指すようにそれらを変更する方法を見つけることができません (実際には、カスタム クラスを指すだけで十分です。実行時にダミー メソッドを実際のメソッドに指すことは難しくありません)。 )。

これを最初に調べたとき、私が求めていることを行うために使用できるフラグのセットを見つけることを本当に望んでいましたが、何も見つからなかったので、誰かが解決策を持っていることを願っています.

0 投票する
7 に答える
12078 参照

objective-c - NSArrayで添え字を使用すると、コンパイラエラー「予期されるメソッドが見つかりません」

NSArraysの新しいObjective-Cリテラル構文を試すために、この単純なコードを作成しました。

最初の行は正常に機能しますが、添え字を付けるとエラーが発生します。

タイプ'NSArray*'のオブジェクトに見つからない配列要素を読み取るために必要なメソッド

私が何か間違ったことをしたのか、それともリテラルがまだ完全に実装されていないのか疑問に思っています。Apple LLVM 4.0でコンパイルし、iOS5SDKを使用しています。

これもエラーのスクリーンショットです。

エラー

0 投票する
1 に答える
382 参照

objective-c - リテラルオブジェクトの構文はOSX開発でのみ使用できますか?

新しいObjective-Cリテラル構文の追加(例@3.14)は、iOSではなくOS X用に開発する場合にのみ利用できますか?それがXcodeアップデート4.4が示唆しているようです。もしそうなら、なぜですか?

0 投票する
1 に答える
4757 参照

objective-c - Xcode 4.4できちんとしたObjective-Cリテラルインデックス機能を取得する方法はありますか?

新しいObjective-Cリテラルについてすべて読み、Xcodeを使用して古いコードを変換しましたが、インデックスコードは変更されませんでした。手作業で変更しましたが、コンパイルされませんでした。iOS 6まで待たなければならないという投稿を見ましたが、今すぐインデックスを作成したいです!

解決策はありますか?

0 投票する
2 に答える
3324 参照

objective-c - @YES では「期待される式」エラーが発生するのに、@(YES) ではコンパイルされるのはなぜですか?

XCode 4.4 の Convert to Modern Objective C Syntax を使用すると、私の[NSNumber numberWithBool:YES]呼び出しは に変換されました@(YES)。私は今忘れてしまったいくつかの問題を抱えており、それらを自分で に変更しました@YES。これは正しい構文であるはずです。

ただし、そうするとエラーが発生します。

予期しない型名 'BOOL': 予期される式

@YES「式」構文があることは知っていますが、単にand を使用できない理由がわかりません@NO

@(YES)コンパイルしないのにコンパイルするのはなぜ@YESですか?それを修正するにはどうすればよいですか?

0 投票する
2 に答える
1359 参照

objective-c - @[obj1, obj2] はどのようなオブジェクトを作成しますか?

私は以下に出くわしました:

を作成しているようですNSArrayが、この配列インスタンスは自動解放されたオブジェクトですか、それとも解放する必要がありますか?

0 投票する
2 に答える
642 参照

objective-c - 同じ列挙型メンバーをボックス化すると、メソッドに渡されるときに、より大きな整数が生成されます

Clangのプリミティブボクシング機能を使用して列挙型メンバーをにパックしていますNSNumber

これに関するClangドキュメントのBoxedEnumsセクションでは、型が指定されていない限り、コンパイラーは列挙型メンバーを整数にボックス化すると述べています。

おかしなことに、列挙型メンバーをメソッドに渡す方法に応じて、さまざまなサイズの整数を取得します。私は次のコードにケースを分離することができました

コンソール出力は

AのCF番号タイプ:3; B:4

(最初のものはkCFNumberSInt32Type、2番目のものはですkCFNumberSInt64Type

宣言をに変更するtypedef enum _MyEnum : intと、両方で同じ結果が表示されますkCFNumberSInt32Type

ボクシングの2つの方法で整数のサイズが異なるのはなぜですか?