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

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

4
Objective-Cのメソッド構文
誰かがこのメソッド宣言構文を私に説明できますか?この関数では、UIPickerView(iPhoneのスロットマシンUI)の行数が返されます。私の理解では、メソッドは ' pickerView' と呼ばれ、NSIntegerを返します。 pickerView最初に' ' というUIPickerviewへのポインタを渡します...最初に、メソッドがパラメータと同じ名前で呼ばれるのはなぜですか? 次に、コンポーネントと呼ばれるNSIntegerパラメータがあり、行をカウントしているコンポーネントを教えてくれます。メソッドの本体にあるものを決定するロジック。 って何numberOfRowsInComponent?返される値を説明しているように見えますが、パラメーターの真ん中にあります。 - (NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { if (component == kStateComponent) return [self.states count]; return[self.zips count]; }

4
なぜObjective-Cのデリゲートは通常、保持ではなくプロパティの割り当てを与えられるのですか?
私はスコットスティーブンソンによって管理されている素晴らしいブログをサーフィンしていて、代理人に「割り当て」プロパティと「保持」を割り当てるという基本的なObjective-Cの概念を理解しようとしています。ガベージコレクションされた環境では、どちらも同じであることに注意してください。私は主に非GCベースの環境(例:iPhone)に関心があります。 スコットのブログから直接: 「assignキーワードは、値をコピーまたは保持するのではなく、インスタンス変数に直接値を割り当てるセッターを生成します。これは、NSIntegerやCGFloatなどのプリミティブ型、またはデリゲートなどの直接所有していないオブジェクトに最適です。」 デリゲートオブジェクトを直接所有していないとはどういう意味ですか?私は通常、デリゲートを保持します。なぜなら、彼らが奈落の底に逃げたくない場合は、保持がそれを処理してくれるからです。私は通常、UITableViewControllerをそれぞれのdataSourceおよびデリゲートから分離して抽象化します。その特定のオブジェクトも保持します。UITableViewには常にデリゲートがあるので、それが消えないようにしたいと思います。 誰かがどこで/なぜ私が間違っているのかさらに説明できるので、Objective-C 2.0プログラミングで、保持の代わりにデリゲートで割り当てプロパティを使用するこの一般的なパラダイムを理解できますか? ありがとう!

2
ベストプラクティス?-コアデータエンティティ属性としての配列/辞書[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 この質問を改善する Core Dataは初めてです。コレクションタイプは属性タイプとして使用できないことに気づきました。配列/辞書タイプのデータを属性として保存する最も効率的な方法は何かを知りたいと思います(たとえば、番地、都市などの住所を構成する要素は、個別のエンティティを必要とせず、個別の属性/フィールドよりも辞書/配列としてより便利に保存されます)。ありがとうございました。

16
透明なUIViewの背後にあるボタンをクリックするにはどうすればよいですか?
1つのサブビューを持つビューコントローラーがあるとします。サブビューは画面の中央を占め、すべての側面に100 pxのマージンがあります。次に、そのサブビュー内をクリックするための小さなものをたくさん追加します。新しいフレームを利用するためだけにサブビューを使用しています(サブビュー内のx = 0、y = 0は実際には親ビューでは100,100です)。 次に、サブビューの背後にメニューなどがあると想像してください。ユーザーがサブビュー内の「小さなもの」を選択できるようにしたいのですが、そこに何もない場合は、その背後にあるボタンにタッチします(とにかく背景がクリアなので)。 これどうやってするの?touchesBeganが通過したように見えますが、ボタンは機能しません。

8
バックグラウンドからアプリを開くときにViewDidAppearが呼び出されない
値が0(ラベル)のビューコントローラーがあり、別のビューコントローラーからそのビューコントローラーを開くと、ラベルに値20をViewController設定viewDidAppearするように設定しました。これは、罰金に動作しますが、私は私のアプリを閉じていないと、再び、私は私のアプリを開くよりも、その値があるため変化しない場合viewDidLoad、viewDidAppearおよびviewWillAppear何も呼び出されます。アプリを開いたときにどのように呼び出すことができますか?から何かをする必要がありapplicationDidBecomeActiveますか?
175 ios  objective-c  iphone  xcode  swift 

19
ストーリーボードにIDのあるビューコントローラーが含まれていません
次のエラーが発生し続けます。 Storyboard (<UIStoryboard: 0x7ebdd20>) doesn't contain a view controller with identifier 'drivingDetails' これはコードです: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"drivingDetails"]; controller.title = [[dao libraryItemAtIndex:indexPath.row] valueForKey:@"name"]; [self.navigationController pushViewController:controller animated:YES]; } はすでにidentifierオンに設定していますが、UIStoryboardまだこのエラーが発生します。

11
現在地の許可ダイアログがすぐに消える
私のアプリはユーザーの現在地を取得し、座標を取得して、目的地や出発地までの距離を提供します。これらすべての可能な宛先はテーブルビューに表示されるため、テーブルにデータを入力すると同時にユーザーの座標を取得しています。唯一のことは、ユーザーの場所を尋ねるアラートビューが表示された後、すぐに消えてクリックできないことです。 アプリが最初に読み込まれたときにこのアラートを手動で表示する方法はありますか?アプリが読み込まれたときにユーザーの現在地を取得して、アラートを強制的に表示させようとしましたが、うまくいきませんでした。

13
Objective-C名前空間の衝突を解決する最良の方法は何ですか?
Objective-Cには名前空間がありません。Cによく似ており、すべてが1つのグローバル名前空間内にあります。一般的な方法は、クラスの頭にイニシャルを付けることです。たとえば、IBMで作業している場合は、クラスの前に「IBM」を付けることができます。Microsoftで働いている場合は、「MS」を使用できます。等々。時々、イニシャルはプロジェクトを参照します。例えばAdiumはクラスの前に "AI"を付けます(イニシャルを取ることのできる背後に会社はないので)。Appleはクラスの前にNSを付け、このプレフィックスはApple専用に予約されていると述べています。 これまでのところ。ただし、クラス名の前に2〜4文字を追加することは、非常に限定された名前空間です。たとえば、MSやAIはまったく異なる意味を持つ可能性があり(たとえばAIは人工知能である可能性があります)、他の開発者がそれらを使用して同じ名前のクラスを作成する場合があります。バング、名前空間の衝突。 これが独自のクラスと使用している外部フレームワークのいずれかとの衝突である場合は、クラスの名前を簡単に変更できます。しかし、2つの外部フレームワークを使用すると、どちらのフレームワークにもソースがなく、変更できないのでしょうか。アプリケーションはそれらの両方とリンクし、名前の競合が発生します。これらをどのように解決しますか?両方のクラスを引き続き使用できるようにそれらを回避する最良の方法は何ですか? Cでは、ライブラリに直接リンクしないことでこれらを回避できます。代わりに、実行時にdlopen()を使用してライブラリをロードし、dlsym()を使用して探しているシンボルを見つけ、それをグローバルシンボルに割り当てます(任意の方法で名前を付けることができます)、このグローバルシンボルを介してアクセスできます。たとえば、一部のCライブラリにopen()という名前の関数があるために競合が発生した場合、myOpenという名前の変数を定義して、ライブラリのopen()関数を指すようにして、システムのopen()を使用したい場合に、あなたは単にopen()を使用し、もう1つを使用したい場合は、myOpen識別子を介してそれにアクセスします。 Objective-Cでも同様のことが可能ですか?そうでない場合、名前空間の競合を解決するために使用できる他の巧妙でトリッキーなソリューションはありますか?何か案は? 更新: これを明確にするために:名前空間の衝突を事前に回避する方法またはより適切な名前空間を作成する方法を提案する回答は確かに歓迎されます。しかし、私の問題を解決しないので、それらを答えとして受け入れません。2つのライブラリがあり、それらのクラス名が衝突しています。それらを変更することはできません。どちらのソースもありません。衝突はすでに存在しており、それを事前に回避する方法についてのヒントはもはや役に立ちません。それらをこれらのフレームワークの開発者に転送し、将来的にはより良い名前空間を選択することを期待できますが、当面は、単一のアプリケーション内でフレームワークを使用するソリューションを探しています。これを可能にする解決策はありますか?


12
UIButtonで境界線を作成する方法は?
「addButton」という名前のアプリでカスタムボタンを使用し、それを白い色で縁取りたいのですが、カスタムボタンの周りに白い色の縁取りをするにはどうすればよいですか?
174 ios  objective-c 


24
エラーメッセージ '_BSMachError:(os / kern)invalid capability(20)'
このエラーメッセージはかなり低レベルなので、さまざまなシナリオでさまざまな理由で表示されることに注意してください。以下の回答のいずれにも記載されていないシナリオがある場合は、状況も追加することを検討してください。これは、このエラーメッセージが表示されるさまざまな状況の中心的な回答になる可能性があります。 2015年11月10日編集また、私は自分の回答を回答としてマークしましたが、それは他の誰かが投稿する前でした。以下に見られるように、実際には答えとしてマークされるべきものはないと思います...このレベルは非常に低いため、このエラーには答えが1つだけではありません。 私は走っています iOS 9.0シミュレータ XCode 7.0 昨日はすべてうまくいきました。 今日、ローテーション関連の一連の作業を行った後、シミュレーターでアプリを実行してローテーションすると、コンソール出力にこのエラーが発生し始めました。 _BSMachError:(os / kern)無効な機能(20) _BSMachError:(os / kern)無効な名前(15) -ビルドフォルダーをクリアしました-派生データフォルダーをクリーニングしました-シミュレーターをリセットしました 私は一緒に働いていました UIViewController viewWillLayoutSubviews UIViewController viewWillTransitionToSize:... また、IBの属性インスペクターでさまざまな「描画」設定を確認していました。 また、UIViewでユーティリティカテゴリを作成し、を作成してCGRectフレームをビューに割り当てるのに役立つ一連のメソッドを作成しました。
173 ios  objective-c  xcode7 

10
Objective-C Cocoaアプリケーションでの正規表現
最初のグーグルは、Objective-C Cocoaアプリケーションで正規表現を実行する組み込みの方法がないことを示しています。 したがって、4つの質問: それは本当ですか? 私をからかってるの? さて、あなたがお勧めする素敵なオープンソースライブラリはありますか? おそらくNSScannerクラスを使用して、ライブラリをインポートせずに十分に近づける方法は何ですか?
173 objective-c  regex  cocoa 

16
iOS 7の半透明のUINavigationBarで明るく鮮やかな色を実現する
iOS 7.1のアップデート:UINavigationBarのアルファチャネルを変更するための回避策は、このアップデートでは無視されているようです。現在のところ、最善の解決策は、「それに対処する」ことであり、選択した色が半透明の効果をレンダリングできることを期待しているようです。私はまだこれを回避する方法を調べています。 iOS 7.0.3のアップデート:作成したGitHubライブラリは、iOS 7.0.3を使用するときにこの問題を少し回避するようにアップデートされました。残念ながら、iOS 7.0.2以前とiOS 7.0.3で作成された両方の色をサポートする魔法の公式はありません。Appleは彩度を改善したようですが、不透明度が犠牲になります(ぼやけた半透明度は不透明度レベルに依存するため)。私は、他の数人と一緒に、これに対するより良い修正の作成に取り組んでいます。 iOS 7が半透明のUINavigationBarの色の彩度を下げる傾向があるという問題にすでに多くの人が遭遇していると思います。 私の目標は、この色合いで半透明のUINavigationBarを実現することです。 しかし、半透明で、私はこれを得ています。背景ビューは白ですが、このビューは少し明るくなると思います。 半透明性を維持しながら元の色を実現する方法はありますか?ここに表示されているように、Facebookがバーを豊かな青色にできることに気づきました。 ..だから何か方法があるはずだと知っています。ここで背景ビューは明らかに違いをもたらしますが、そのコンテンツのほとんどは灰色/白です。どんなバーティントカラーを入れても、半透明では鮮やかな色が出ないようです。 ソリューションで更新されました。 これが私が思いついた解決策です。私はapratoのソリューションを採用し、カスタムUINavigationBarをUINavigationControllerサブクラスに含めました。私は、以下のリストにある実装と、サンプルアプリを含むリポジトリを作成しました。 //////////////////////////// // CRNavigationBar.m //////////////////////////// #import "CRNavigationBar.h" @interface CRNavigationBar () @property (nonatomic, strong) CALayer *colorLayer; @end @implementation CRNavigationBar static CGFloat const kDefaultColorLayerOpacity = 0.5f; static CGFloat const kSpaceToCoverStatusBars = 20.0f; - (void)setBarTintColor:(UIColor *)barTintColor { [super setBarTintColor:barTintColor]; …

30
UITableViewのセルの前の空スペースを削除
現在UITableView、ビューコントローラーの上部ではなく、別の場所にを配置しようとしています。これで、ナビゲーションバーを説明するために上部にヘッダーを追加しようとしていますが、コントローラーの上部にないため、これは必要ありません。 UITableViewセルを配置する場所の左上隅を配置しても、セルはそこに配置されません。 ここで、セルが正しい場所にあるようにテーブルビューを上に移動すると、別の問題が発生します-スクロールすると、セルがそこまで上に移動します(これは、ナビゲーションコントローラーの上にある指で行います)。 手放すと、はい-セルは検索バーのすぐ下に移動しますが、これを明らかに上に移動する方法には問題があります。 これを行うにはどうすればよいですか?もっと簡単な方法はありますか?

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