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

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

30
ハイライトされているときにUIButtonの背景色を変更するにはどうすればよいですか?
アプリのある時点で強調表示されていますUIButton(たとえば、ユーザーがボタンに指を置いている場合など)。ボタンが強調表示されている間(ユーザーの指がボタン上にある間)に背景色を変更する必要があります。 。 私は以下を試しました: _button.backgroundColor = [UIColor redColor]; しかし、それは機能していません。色は変わりません。ボタンが強調表示されていないときに同じコードを試しましたが、正常に動作します。また-setNeedsDisplay、色を変えて呼び出してみましたが効果がありませんでした。 ボタンに背景色を強制的に変更させる方法は?

5
Objective-Cの自動参照カウントはどのようなリークを防止または最小化しませんか?
MacおよびiOSプラットフォームでは、メモリリークは多くの場合、リリースされていないポインタが原因で発生します。従来、割り当て、コピー、保持をチェックして、それぞれに対応するリリースメッセージがあることを確認することが常に最も重要でした。 Xcode 4.2に付属しているツールチェーンでは、最新バージョンのLLVMコンパイラで自動参照カウント(ARC)が導入されています。これにより、コンパイラにデータをメモリ管理させることで、この問題を完全に回避できます。それはかなりクールであり、多くの不必要で平凡な開発時間を削減し、適切な保持/解放のバランスで簡単に修正できる多くの不注意なメモリリークを防ぎます。MacとiOSアプリでARCを有効にするときは、自動解放プールでさえ別の方法で管理する必要があります(独自NSAutoreleasePoolのをもう割り当てる必要がないため)。 しかし、他のどのメモリリークでも、私がまだ注意しなければならないことを妨げていませんか? おまけとして、Mac OS XとiOSのARCとMac OS Xのガベージコレクションの違いは何ですか?


8
Objective-Cでのメソッドのスウィズリングの危険性は何ですか?
メソッドのスウィズリングは危険な慣行だと人々が言うのを聞いたことがあります。スウィズリングという名前でさえ、それは少しのごまかしであることを示唆しています。 メソッドスウィズリングは、セレクターAの呼び出しが実際に実装Bを呼び出すようにマッピングを変更しています。これの1つの用途は、閉じたソースクラスの動作を拡張することです。 リスクを形式化して、スウィズリングを使用するかどうかを決定する誰もが、彼らがやろうとしていることに対してそれが価値があるかどうか、情報に基づいた決定をすることができるようにできますか? 例えば 衝突の命名:クラスが後でその機能を拡張して、追加したメソッド名を含めると、巨大な方法で問題が発生します。スウィズルされたメソッドに賢明な名前を付けることにより、リスクを軽減します。

11
iOS 7ナビゲーションバーのテキストと矢印の色
ナビゲーションバーの背景を黒に設定し、その中のすべての色を白に設定したい。 だから、私はこのコードを使用しました: [[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor], NSForegroundColorAttributeName, [UIColor whiteColor], NSForegroundColorAttributeName, [NSValue valueWithUIOffset:UIOffsetMake(0, -1)], NSForegroundColorAttributeName, [UIFont fontWithName:@"Arial-Bold" size:0.0], NSFontAttributeName, nil]]; しかし、戻るボタンのテキストの色、矢印、バーのボタンは、デフォルトの青色のままです。 下の画像のようにそれらの色を変更するにはどうすればよいですか?

3
dispatch_asyncについて
このコードについて質問があります dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSData* data = [NSData dataWithContentsOfURL: kLatestKivaLoansURL]; [self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES]; }); このコードの最初のパラメーターは dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) このコードに、特定の優先度レベルのグローバル同時キューを返すことが定義されているグローバルキューでシリアルタスクを実行するように要求していますか? dispatch_get_global_queueメインキューよりも使用する利点は何ですか? 私は混乱しています。これをよりよく理解するために私を助けていただけませんか。


13
Windows用Objective-C
WindowsプラットフォームでObjective-Cを作成する最良の方法は何でしょうか? Cygwinとgcc?これをVisual Studioに統合する方法はありますか? それらの線に沿って-このようなもののためにWindows SDKをリンクして使用する方法に関する提案はありますか?それは別の獣ですが、私はWindows DLLでアセンブリとリンクを記述して、それらの呼び出しにアクセスできるようにすることができますが、ググリングして断片的な指示を取得せずにこれを行う方法はわかりません。 このようなことをしたり説明したりするための優れたオンラインまたは本のリソースを知っている人はいますか?



11
UIGestureRecognizerを複数のビューにアタッチできますか?
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapTapTap:)]; [self.view1 addGestureRecognizer:tapGesture]; [self.view2 addGestureRecognizer:tapGesture]; [tapGesture release]; 上記のコードではタップのみview2が認識されます。3行目をコメント化すると、タップview1が認識されます。私が正しく、ジェスチャー認識機能を1回しか使用できない場合、これがバグなのか、それともいくつかのドキュメントが必要なだけなのかわかりません。

20
iOS 8レンダリングされていないビューのスナップショットを作成すると、空のスナップショットになります
iOS 8では、今までカメラから画像をキャプチャするのに問題があります。このコードを使用しています UIImagePickerController *controller=[[UIImagePickerController alloc] init]; controller.videoQuality=UIImagePickerControllerQualityTypeMedium; controller.delegate=(id)self; controller.sourceType=UIImagePickerControllerSourceTypeCamera; [self presentViewController:controller animated:YES completion:nil]; しかし、iOS 8ではこれを取得しています: Snapshotting a view that has not been rendered results in an empty snapshot. Ensure your view has been rendered at least once before snapshotting or snapshot after screen updates. 私はによって提供される解決策を試してみましたが、このポストで @property (strong,nonatomic)UIImagePickerController *controller; _controller=[[UIImagePickerController alloc] …

2
setNeedsLayoutとsetNeedsUpdateConstraintsおよびlayoutIfNeededとupdateConstraintsIfNeeded
自動レイアウトチェーンは基本的に3つの異なるプロセスで構成されることを知っています。 制約の更新 レイアウトビュー(ここでフレームの計算を取得します) 表示 何は、私には全く明らかではないとの内側の差です-setNeedsLayoutと-setNeedsUpdateConstraints。Apple Docsから: setNeedsLayout ビューのサブビューのレイアウトを調整する場合は、アプリケーションのメインスレッドでこのメソッドを呼び出します。このメソッドはリクエストを記録し、すぐに戻ります。このメソッドは即時の更新を強制せず、代わりに次の更新サイクルを待機するため、これらのビューを更新する前に、このメソッドを使用して複数のビューのレイアウトを無効にすることができます。この動作により、すべてのレイアウト更新を1つの更新サイクルに統合できます。これは通常、パフォーマンスの点で優れています。 setNeedsUpdateConstraints カスタムビューのプロパティが制約に影響を与える方法で変更された場合、このメソッドを呼び出して、将来のある時点で制約を更新する必要があることを示すことができます。次に、システムはupdateConstraintsを通常のレイアウトパスの一部として呼び出します。制約が必要になる直前に一度に更新することで、レイアウトパス間でビューに複数の変更が加えられたときに、不必要に制約を再計算する必要がなくなります。 制約を変更した後でビューをアニメーション化し、通常は変更をアニメーション化する場合は、たとえば次のようにします。 [UIView animateWithDuration:1.0f delay:0.0f usingSpringWithDamping:0.5f initialSpringVelocity:1 options:UIViewAnimationOptionCurveEaseInOut animations:^{ [self.modifConstrView setNeedsUpdateConstraints]; [self.modifConstrView layoutIfNeeded]; } completion:NULL]; すべてを使用するのでは-setNeedsLayoutなく-setNeedsUpdateConstraints期待どおりに機能する場合は、を使用して変更-layoutIfNeededする-updateConstraintsIfNeededとアニメーションが発生しないことがわかりました。 私は自分の結論を出そうとしました: -updateConstraintsIfNeeded 制約を更新するだけで、レイアウトを強制的に実行しないため、元のフレームは保持されます -setNeedsLayout-updateContraintsメソッドも呼び出す では、一方を他方の代わりに使用してもよいのはいつですか?レイアウトメソッドについては、制約が変更されたビューまたは親ビューで呼び出す必要がありますか?



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