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

このタグは、Objective-C機能に関する質問または言語のコードに依存する質問でのみ使用する必要があります。タグ[cocoa]および[cocoa-touch]は、Appleのフレームワークまたはクラスについて質問するために使用する必要があります。これらのプラットフォームに固有の問題には、関連タグ[ios]、[macos]、[apple-watch]、および[tvos]を使用します。

3
@interfaceと@protocolの説明?
Objective Cの@interfaceが何であるか知りたいですか?プログラマーが変数、クラス名、またはメソッド名を宣言したい場所ですか...?それがJavaのインターフェースのようなものかどうかはわかりません。そして、ObjectiveCの@protocolについても同様です。Javaのインターフェースのようです。誰か詳細な説明をお願いします。本当に感謝しています。


9
NSLocale currentLocaleは、ユーザーの現在の言語ではなく、常に「en_US」を返します
私はiPhoneアプリを国際化する過程にあります-ユーザーの現在のロケールに基づいて、特定のビューにプログラムによる変更を加える必要があります。iPhoneシミュレーターや実際のハードウェアの言語設定に関係なく、locale常に「en_US」と評価されるため、私は気が狂います。 NSString *locale = [[NSLocale currentLocale] localeIdentifier]; NSLog(@"current locale: %@", locale); クレイジーなことは、アプリケーションの残りの部分が期待どおりに動作することです。正しい文字列がLocalization.stringsファイルから選択され、インターフェイスで使用され、選択されたロケールの正しい.xibファイルが使用されます。 私はまた、何の役にも立たず、同じ結果で以下を試しました: NSString *locale = [[NSLocale autoupdatingCurrentLocale] localeIdentifier]; NSLog(@"current locale: %@", locale); 私が見逃している単純なものはありますか?好みか輸入か? 私が以前行ったこと: ダレンの答えが示唆しているように、私が探している好みはではなく、NSLocaleここにあります: NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults]; NSArray* languages = [userDefaults objectForKey:@"AppleLanguages"]; NSString* preferredLanguage = [languages objectAtIndex:0]; NSLog(@"preferredLanguage: %@", preferredLang); ピーターの答えはより良い解決策のようです: NSArray* preferredLanguages = [NSLocale preferredLanguages]; …

5
iVarを「最新の」Objective-Cのどこに置くか?
RayWenderlichによる本「iOS6byTutorials」には、より「現代的な」Objective-Cコードの記述に関する非常に優れた章があります。あるセクションでは、本はiVarをクラスのヘッダーから実装ファイルに移動する方法を説明しています。すべてのiVarはプライベートである必要があるため、これは正しいことのようです。 しかし、これまでのところ、私はそうするための3つの方法を見つけました。誰もがそれを異なってやっています。 1.)中括弧のブロック内の@implementantionの下にiVarsを配置します(これは本で行われている方法です)。 2.)中括弧のブロックなしでiVarsを@implementantionの下に置きます 3.)iVarsを@implementantion(クラス拡張)の上のプライベートインターフェイス内に配置します これらのソリューションはすべて正常に機能しているようで、これまでのところ、アプリケーションの動作に違いは見られません。それを行う「正しい」方法はないと思いますが、いくつかのチュートリアルを作成する必要があり、コードに対して1つの方法のみを選択したいと思います。 どちらに行けばいいですか? 編集:ここではiVarについてのみ話します。プロパティではありません。オブジェクトがそれ自体にのみ必要とし、外部に公開されるべきではない追加の変数のみ。 コードサンプル 1) #import "Person.h" @implementation Person { int age; NSString *name; } - (id)init { self = [super init]; if (self) { age = 40; name = @"Holli"; } return self; } @end 2) #import "Person.h" @implementation Person int age; NSString *name; …


19
宣言されたプロパティのドット表記とメッセージ表記
これで、プロパティの「ドット」表記ができました。私は様々な見てきた背中とforthsドット表記対メッセージ表記法のメリットについてを。回答を汚さないようにするために、質問ではどちらの方法でも回答しません。 プロパティアクセスのドット表記とメッセージ表記についてどう思いますか? Objective-Cに焦点を合わせ続けるようにしてください-私が提示する1つのバイアスは、Objective-CがObjective-Cであるため、JavaやJavaScriptのような設定は無効であるということです。 有効な解説は、技術的な問題(操作の順序、キャストの優先順位、パフォーマンスなど)、明確さ(構造とオブジェクトの性質、賛否両論)、簡潔さなどに関するものです。 私はコードの厳格な品質と読みやすさの学校であり、コードの規則と品質が最優先される巨大なプロジェクトに取り組んできました(書き込みは1000回のパラダイムを一度読み取りました)。

6
UIViewをコピーできますか?
この方法を使用するだけです。 UIView* view2 = [view1 copy]; // view1 existed これにより、シミュレーターはこのアプリを起動できなくなります。 保持してみてください、 UIView* view2 = [view1 retain]; // view1 existed // modify view2 frame etc に変更view2が適用される場合はview1、とview2同じメモリを共有することを理解していますview1。 なぜUIViewコピーできないのですか?理由は何ですか?
81 ios  objective-c  uiview  copy 

17
SKSceneでのボタンの設定
ではUIButtonsうまく機能しないことがわかったので、でボタンを作成するためSKSceneにサブクラス化しようとSKNodeしていますSpriteKit。 私がそれを機能させたい方法は、ボタンを初期化してSKSceneタッチイベントを有効にすると、ボタンSKSceneが押されたときにボタンがメソッドを呼び出すことです。 この問題の解決策を見つけるためのアドバイスをいただければ幸いです。ありがとう。

6
#define vs const in Objective-C
私はObjective-Cconstを初めて使用しますが、前処理ディレクティブに関していくつか質問があり#defineます。 まず、を使用して定数の型を定義することはできないことがわかりました#define。何故ですか? 第二に、それらの1つを別のものよりも使用する利点はありますか? 最後に、どちらの方法がより効率的および/またはより安全ですか?

3
.hファイルと.mファイルの@interface定義の違い
通常は使用します @interface interface_name : parent_class <delegates> { ...... } @end .hファイルと.mファイルのメソッドは、.hファイルで宣言された変数のプロパティを合成します。 ただし、一部のコードでは、この@interface ..... @endメソッドは.mファイルにも保持されます。どういう意味ですか?それらの違いは何ですか? また、.mファイルで定義されているインターフェイスファイルのゲッターとセッターについても説明します。 前もって感謝します

7
@synthesizeを明示的に使用する必要があるのはいつですか?
私の知る限り、XCode 4.4以降@synthesize、プロパティアクセサーは自動生成されます。しかし、ちょうど今、私はについてのコードのサンプルを読みましたNSUndoManager、そしてコードの中でそれ@synthesizeは明示的に追加されていることに気づきました。お気に入り: @interface RootViewController () @property (nonatomic, strong) NSDateFormatter *dateFormatter; @property (nonatomic, strong) NSUndoManager *undoManager; @end @implementation RootViewController //Must explicitly synthesize this @synthesize undoManager; 今、戸惑っています...@synthesizeコードに明示的に追加する必要があるのはいつですか?

9
順序付けられたキーを持つNSDictionary
基本的に連想配列(キーと値としての文字列)として使用しているNSDictionary(plistに格納されている)があります。アプリケーションの一部としてキーの配列を使用したいのですが、特定の順序にしたいのです(実際には、キーを並べ替えるためのアルゴリズムを記述できる順序ではありません)。キーの個別の配列をいつでも格納できますが、辞書のキーと配列の値を常に更新し、それらが常に対応していることを確認する必要があるため、これはちょっと厄介なようです。現在、私は[myDictionary allKeys]を使用していますが、明らかにこれにより、任意の保証されていない順序でそれらが返されます。私が見逃しているObjective-Cのデータ構造はありますか?誰かがこれをよりエレガントに行う方法について何か提案がありますか?

6
xibを使用して再利用可能なUIViewを作成する(およびストーリーボードからロードする)
OK、これについてStackOverflowに数十の投稿がありますが、ソリューションについて特に明確なものはありません。UIView付随するxibファイルを使用してカスタムを作成したいと思います。要件は次のとおりです。 個別ではありませんUIViewController–完全に自己完結型のクラス ビューのプロパティを設定/取得できるようにするクラスのアウトレット これを行うための私の現在のアプローチは次のとおりです。 オーバーライド -(id)initWithFrame: -(id)initWithFrame:(CGRect)frame { self = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:self options:nil] objectAtIndex:0]; self.frame = frame; return self; } -(id)initWithFrame:ビューコントローラで使用してプログラムでインスタンス化する MyCustomView *myCustomView = [[MyCustomView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)]; [self.view insertSubview:myCustomView atIndex:0]; これは正常に機能します(ただし[super init]、ロードされたペン先のコンテンツを使用してオブジェクトを呼び出したり設定したりすることは少し疑わしいようですが、この場合はサブビューを追加することもできます)。ただし、ストーリーボードからのビューもインスタンス化できるようにしたいと思います。だから私はできる: UIViewストーリーボードの親ビューにを配置します カスタムクラスをに設定します MyCustomView オーバーライド-(id)initWithCoder:–私が最もよく見たコードは、次のようなパターンに適合します。 -(id)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; if …


3
AVAssetReaderで波形を描く
私はassetUrlを使用してiPodライブラリから曲を読んでいます(コードではaudioUrlという名前です)私はそれをさまざまな方法で再生でき、カットでき、これで歳差運動をすることができますが...これで何をするのか本当にわかりません波形を描画するためのデータを取得するためのCMSampleBufferRef!ピーク値に関する情報が必要ですが、どうすればこの(おそらく別の)方法で取得できますか? AVAssetTrack * songTrack = [audioUrl.tracks objectAtIndex:0]; AVAssetReaderTrackOutput * output = [[AVAssetReaderTrackOutput alloc] initWithTrack:songTrack outputSettings:nil]; [reader addOutput:output]; [output release]; NSMutableData * fullSongData = [[NSMutableData alloc] init]; [reader startReading]; while (reader.status == AVAssetReaderStatusReading){ AVAssetReaderTrackOutput * trackOutput = (AVAssetReaderTrackOutput *)[reader.outputs objectAtIndex:0]; CMSampleBufferRef sampleBufferRef = [trackOutput copyNextSampleBuffer]; if (sampleBufferRef){/* what I gonna do …

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