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

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

4
Objective-Cメソッド名の最後の部分に引数が必要なのはなぜですか(複数の部分がある場合)?
Objective-Cでは、最後のコンポーネントが引数を取らない場所でメソッド名を宣言することはできません。たとえば、次は違法です。 -(void)take:(id)theMoney andRun; -(void)take:(id)yourMedicine andDontComplain; なぜObjective-Cはこのように設計されたのですか?それは、Smalltalkのアーティファクトだけでしたか? Smalltalkではメッセージの呼び出しに区切り文字がないため、この制限はSmalltalkでは理にかなっています。したがって、最後のコンポーネントは最後の引数に対する単項メッセージとして解釈されます。たとえば、BillyAndBobby take:'$100' andRunはとして解析されBillyAndBobby take:('$100' andRun)ます。これは、角かっこが必要なObjective-Cでは問題になりません。 パラメータなしのセレクタコンポーネントをサポートしても、プログラマが選択するメソッド名(たとえばrunWith:、take:andRun)は、プログラムの機能的なセマンティクスにも、言語の表現力にも影響しません。確かに、パラメーターのないコンポーネントを含むプログラムは、アルファを持たないものと同じです。したがって、そのような機能が不要であると述べている回答(Objective-Cデザイナーの理由が記載されている場合を除き、誰かがたまたまBrad CoxやTom Loveを知っていますか?彼らはここにいますか?)には興味がありません。メソッド名を記述して、機能が不要になるようにする方法。主な利点は、可読性と書き込み可能性(読みやすさのようなものですが、ご存知のとおりです)です。これは、自然言語の文にさらに似たメソッド名を記述できることを意味します。同類-(BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication*)theApplicationマット・ギャラガーが指摘する(「ココアと恋」に-(BOOL)application:(NSApplication*)theApplication shouldTerminateAfterLastWindowClosed、したがって、パラメータを適切な名詞のすぐ隣に配置します。 AppleのObjective-Cランタイム(たとえば)は、この種のセレクターを完全に処理できるので、コンパイラーはどうしてでしょうか?それらをメソッド名でもサポートしないのはなぜですか? #import <Foundation/Foundation.h> #import <objc/runtime.h> @interface Potrzebie : NSObject -(void)take:(id)thing; @end @implementation Potrzebie +(void)initialize { SEL take_andRun = NSSelectorFromString(@"take:andRun"); IMP take_ = class_getMethodImplementation(self, @selector(take:)); if (take_) { if (NO == class_addMethod(self, take_andRun, take_, "@@:@")) { …




12
ObjectiveCのNSDictionaryオブジェクトからのURLクエリパラメーターの作成
すべてのURL処理オブジェクトが標準のCocoaライブラリ(NSURL、NSMutableURL、NSMutableURLRequestなど)に存在しているため、GETリクエストをプログラムで作成する簡単な方法を見過ごさなければならないことはわかっています。 現在、手動で「?」を追加しています 「&」で結合された名前と値のペアが続きますが、名前と値のペアはすべて手動でエンコードする必要があるため、URLに接続しようとしたときにNSMutableURLRequestが完全に失敗しません。 これは、プリベークされたAPIを使用できるように思えます...クエリパラメータのNSDictionaryをNSURLに追加するための追加設定はありますか?これに取り組む必要がある別の方法はありますか?

5
オブジェクト文字列プロパティに基づいてXcodeに条件付きブレークポイントを設定する方法は?
特定の文字列に一致したときにデバッガーを中断できるようにしています。例として、私はこのようなものを持つかもしれません: Foo myObj = [self gimmeObj]; myObjというプロパティがある場合がありますname。デバッガーが割り当て時に停止するようにしたい [myObj.name isEqualToString:@"Bar"]; Xcodeで条件付きブレークポイントを設定するにはどうすればよいですか?

4
iOS Prefix.pchのベストプラクティス
iOSプロジェクトのPrefix.pchにさまざまな便利なマクロを追加する多くの開発者を見てきました。 iOS Prefix.pchファイルに何を追加することをお勧めしますか(またはお勧めしませんか)?Prefix.pchはどのように見えますか?
90 ios  objective-c  xcode  pch 

7
YouTube APIバージョン3で動画の長さを取得するにはどうすればよいですか?
YouTube API v3を使用してYouTubeを検索しています。 https://developers.google.com/youtube/v3/docs/search ご覧のとおり、応答JSONには動画の長さが含まれていません。ビデオの長さを取得する方法はありますか? できれば、結果の各要素に対してAPIを再度呼び出さないようにしてください(期間を取得する唯一の方法でない限り)。

4
UITextFieldリターンキーにアクションを追加する方法
ビューにボタンとテキストテキストフィールドがあります。テキストフィールドをクリックすると、キーボードが表示され、テキストフィールドに書き込むことができます。また、ボタンをクリックしてキーボードを閉じることもできます。 [self.inputText resignFirstResponder]; キーボードのリターンキーを有効にしたい。キーボードを押すと、キーボードが消えて何かが起こります。これどうやってするの?

16
UIViewに影響を与えるすべての制約を削除します
いくつかの制約を介して画面に配置されるUIViewがあります。一部の制約はスーパービューによって所有され、その他の制約は他の祖先によって所有されます(たとえば、UIViewControllerのviewプロパティ)。 これらの古い制約をすべて削除し、新しい制約を使用して新しい場所に配置したいと思います。 すべての制約に対してIBOutletを作成せず、どのビューがその制約を所有しているかを覚えておく必要なしに、これを行うにはどうすればよいですか? 詳述すると、単純なアプローチは、制約ごとにIBOutletsの束を作成し、次のようなコードを呼び出すことです。 [viewA removeConstraint:self.myViewsLeftConstraint]; [viewB removeConstraint:self.myViewsTopConstraint]; [viewB removeConstraint:self.myViewsBottomConstraint]; [self.view removeConstraint:self.myViewsRightConstraint]; このコードの問題は、最も単純な場合でも、2つのIBOutletを作成する必要があることです。複雑なレイアウトの場合、これは4つまたは8つの必要なIBOutletsに簡単に到達する可能性があります。さらに、制約を削除するための呼び出しが適切なビューで呼び出されていることを確認する必要があります。たとえば、myViewsLeftConstraintがによって所有されていると想像してくださいviewA。誤って電話をかけても[self.view removeConstraint:self.myViewsLeftConstraint]、何も起こりません。 注:メソッドconstraintsAffectingLayoutForAxisは有望に見えますが、デバッグのみを目的としています。 アップデート:私は契約を受けています回答の多くはself.constraints、self.superview.constraintsこれらの、またはいくつかの変種。これらのメソッドは、ビューに影響を与える制約ではなく、ビューが所有する制約のみを返すため、これらのソリューションは機能しません。 これらのソリューションの問題を明確にするために、次のビュー階層を検討してください。 祖父 お父さん 私 息子 娘 兄 おじさん ここで、次の制約を作成し、それらを常に最も近い共通の祖先にアタッチするとします。 C0:私:息子と同じトップ(私が所有) C1:私:幅= 100(私が所有) C2:私:ブラザーと同じ高さ(父が所有) C3:私:おじさんと同じトップ(祖父が所有) C4:私:祖父と同じ左(祖父が所有) C5:兄弟:父と同じ左(父が所有) C6:おじさん:おじいさんと同じ左(おじいさんが所有) C7:息子:娘と同じ左(私が所有) ここで、に影響を与えるすべての制約を削除したいとしますMe。適切な解決策は削除する必要が[C0,C1,C2,C3,C4]あり、他には何もありません。 self.constraints(selfがMeである場合)を使用[C0,C1,C7]すると、Meが所有する唯一の制約であるため、が取得されます。明らかに、これが欠落しているため、これを削除するだけでは十分ではありません[C2,C3,C4]。さらに、C7不必要に取り外しています。 私がself.superview.constraints(自己が私である場合)を使用する場合[C2,C5]、それらは父が所有する制約であるため、私は取得します。とC5はまったく関係がないため、明らかにこれらすべてを削除することはできませんMe。 を使用するとgrandfather.constraints、取得し[C3,C4,C6]ます。繰り返しますが、そのC6ままにしておく必要があるため、これらすべてを削除することはできません。 強引なアプローチは、ビューの祖先(それ自体を含む)のそれぞれをループし、ビュー自体であるかどうfirstItemかsecondItemを確認することです。その場合は、その制約を削除します。これにより、正しい解が返され[C0,C1,C2,C3,C4]、が返され、それらの制約のみが返されます。 ただし、祖先のリスト全体をループするよりも、より洗練されたソリューションがあることを望んでいます。



4
UIButtonでネイティブの「パルス効果」アニメーションを実行する方法-iOS
UIButtonに何らかのパルスアニメーション(無限ループ "スケールイン-スケールアウト")を設定して、ユーザーの注意をすぐに引き付けたいと思います。 私はこのリンクを見ました-webkit-animation-外向きのリングを使用してパルス効果を作成する方法が、ネイティブフレームワークのみを使用してこれを行う方法があるかどうか疑問に思っていましたか?

12
-[UITableView _endCellAnimationsWithContext:]のアサーションエラー
うまくいけば、これは簡単な修正になるでしょう。私は私が得続けるエラーを理解しようとしています。エラーは以下にリストされており、appdelagateはその下にあります。 どんな助けでもありがたいです。 ありがとう 2012-04-12 21:11:52.669 Chanda [75100:f803] ---のアサーションエラー-[UITableView _endCellAnimationsWithContext:]、/SourceCache/UIKit_Sim/UIKit-1914.84/UITableView.m:1037 2012-04-12 21:11:52.671 Chanda [75100:f803] ---キャッチされない例外 ' NSInternalInconsistencyException' によりアプリを終了しています、理由: '無効な更新:セクション0の無効な行数。更新後の既存のセクションに含まれる行数(2)は、更新前にそのセクションに含まれる行数(2)に加えて、さらにまたはそのセクションに挿入または削除された行の数(1挿入、0削除)およびそのセクションに移動またはそこから移動された行の数(0は内側に移動、0は外側に移動)。 #import "AppDelegate.h" @implementation AppDelegate @synthesize window = _window; @synthesize databaseName,databasePath; - (BOOL)application: (UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions { self.databaseName = @"Customers.db"; NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentDir = [documentPaths objectAtIndex:0]; …

16
UITableViewをグループ化されたスタイルに設定するにはどうすればよいですか
UITableViewControllerセクションを持つサブクラスがあります。セクションはデフォルトのスタイルで表示されています(角が丸くない)。TableViewスタイルをコードでグループ化する方法を教えてください。私はこれにInterface Builderを使用していないので、次のようなものが必要です [self.tableView setGroupedStyle] Stack Overflowで検索しましたが、答えが見つかりませんでした。

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