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

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

24
Xcodeビルドエラー「アーキテクチャx86_64の未定義のシンボル」
Xcode初心者の質問: Xcode 4.6.3を使ったのはこれが初めてです。 ペアになっているBTデバイスを検索してNSLogに出力する、非常にシンプルなコンソールプログラムを作成しようとしています。 次のエラーでビルドされます。 Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_IOBluetoothDevice", referenced from: objc-class-ref in main.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) 私は狂ったように検索しました。一般的な問題は、ヘッダーファイルのみがインポートされ、リンカによって実装(* .m-file)が見つからないファイルへの参照である必要があります。ただし、IOBluetoothライブラリはFoundation Frameworkのような標準フレームワークです。 上記のステートメントで何が欠けていますか? また、32ビットマシン用にビルドを試みました(ビルドは再び失敗します)。これは明らかにリンカーエラーですが、ヘッダーファイルは標準で含まれているフレームワークから呼び出され、 IOBluetooth? 参考までに、私のメインコード "main.m"は次のとおりです。 #import <Foundation/Foundation.h> #import <IOBluetooth/objc/IOBluetoothDevice.h> // …

9
ブロックで「自己」のサイクルを保持
この質問はかなり基本的なものだと思いますが、ブロックに入っている多くのObjective-Cプログラマーに関係があると思います。 私が聞いたことは、ブロックはそれらとして参照されるローカル変数をconstコピーとしてキャプチャselfするため、ブロック内で使用すると、そのブロックがコピーされた場合に保持サイクルが発生する可能性があるということです。したがって、__blockブロックをselfコピーするのではなく、ブロックを強制的に直接処理するために使用することになっています。 __block typeof(self) bself = self; [someObject messageWithBlock:^{ [bself doSomething]; }]; ただの代わりに [someObject messageWithBlock:^{ [self doSomething]; }]; 私が知りたいのは次のとおりです。これがtrueの場合、醜さを回避できる方法はありますか(GCの使用は別として)?

5
dequeueReusableCellWithIdentifierとdequeueReusableCellWithIdentifierを使用する場合:forIndexPath
dequeueReusableCellWithIdentifierには2つのオーバーロードがあり、どちらを使用するべきかを判断しようとしていますか? forIndexPath関数に関するアップルのドキュメントには、「このメソッドはインデックスパスを使用して、テーブルビュー内のセルの位置に基づいて追加の構成を実行します」と記載されています。 それをどのように解釈するのかわかりませんか?
167 ios  objective-c  swift 


3
ARCとブリッジキャスト
ARCでは、にキャストできなくなりましCGColorRefたid。私はブリッジキャストをする必要があることを学びました。clang docsによると: ブリッジ・キャスト Cスタイルのキャストは、3つのキーワードの一つでアノテートされています。 (__bridge T) opオペランドを宛先の型にキャストしますT。T が保持可能なオブジェクトポインタ型の場合、保持op不可能なポインタ型でなければなりません。もしT非保持可能ポインタ型である場合、opは保持できるオブジェクトのポインタ型を持っている必要があります。それ以外の場合、キャストは不正です。所有権の譲渡はなく、ARCは保持操作を挿入しません。 (__bridge_retained T) op保持可能なオブジェクトポインタ型である必要があるオペランドを、保持不可能なポインタ型である宛先型にキャストします。ARCはローカル値の通常の最適化に従って値を保持し、受信者はその+1のバランスを取る責任があります。 (__bridge_transfer T) op保持不可能なポインタ型でなければならないオペランドを、保持可能なオブジェクトポインタ型でなければならない宛先型にキャストします。ARCは、ローカル値の通常の最適化に従って、囲んでいる完全式の終わりに値を解放します。 これらのキャストは、ARC制御の内外にオブジェクトを転送するために必要です。保持可能なオブジェクトポインターの変換に関するセクションの理論的根拠を参照してください。 __bridge_retainedまたは__bridge_transferキャストを使用して、ARCに不均衡な保持または解放をそれぞれ放出するように説得することは、不適切な形式です。 それぞれどのような状況で使用しますか? 例えば、CAGradientLayer持ちcolorsの配列プロパティ受け付けるCGColorRef秒。私は__brigeここで使用するべきだと思いますが、正確になぜすべきか(すべきでないか)は明確ではありません。

4
NSInvalidUnarchiveOperationException:NSLayoutConstraintという名前のクラスをインスタンス化できませんでした
私はこれに非常に新しいです。iPhoneプロジェクト「HelloWorld」について、Appleのチュートリアルを1つずつ実行しました。iPhone 5.0シミュレータで実行するとクラッシュしました。 2012-11-02 14:46:06.782 HelloWorld [9880:c07] *キャッチされない例外 'NSInvalidUnarchiveOperationException'のためにアプリを終了します、理由: 'NSLayoutConstraintという名前のクラスをインスタンス化できませんでした' *最初のコールスタックをスローします:(0x14a2052 0xea2d0a 0x144aae78 0x144a9e7 0x32a9e7 0x32a9d7 0x32f6b7 0x23036d 0xd7e2c 0xd83a9 0xd85cb 0x38a73 0x38ce2 0x38ea8 0x3fd9a 0x10be6 0x118a6 0x20743 0x211f8 0x14aa9 0x138cfa9 0x14761c5 0x13db022 0x13d990a 0x13d8db4 0x13d8ccb 0x112a7 0x12a9b 0x1fed 0x1f15 0x1の)例外をスロー呼ばTERMINATE(lldb) 誰かが何が悪かったのか教えてもらえますか?Xcode 4.5を使用しています。

18
ローカルHTMLファイルをUIWebViewにロードする方法
HTMLファイルをUIWebViewにロードしようとしていますが、機能しません。これがステージです。プロジェクトにhtml_filesというフォルダがあります。次に、インターフェイスビルダーでwebViewを作成し、viewControllerでそれにアウトレットを割り当てました。これは、htmlファイルを追加するために使用しているコードです。 -(void)viewDidLoad { NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"html" inDirectory:@"html_files"]; NSData *htmlData = [NSData dataWithContentsOfFile:htmlFile]; [webView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@""]]; [super viewDidLoad]; } これは機能せず、UIWebViewは空白です。私はいくつかの助けに感謝します。

4
View Controller間で通信するための最良の方法は何ですか?
一般的に、objective-c、cocoa、iPhone devの初心者なので、言語とフレームワークを最大限に活用したいという強い思いがあります。 私が使用しているリソースの1つは、スタンフォード大学のCS193Pクラスのメモで、Web上に残したものです。講義ノート、課題、サンプルコードが含まれており、コースはApple開発者によって提供されたので、間違いなく「馬の口から」であると考えています。 クラスのウェブサイト:http : //www.stanford.edu/class/cs193p/cgi-bin/index.php レクチャー08は、UINavigationControllerスタックにプッシュされた複数のUIViewControllersを持つUINavigationControllerベースのアプリを構築する割り当てに関連しています。これがUINavigationControllerの仕組みです。それは論理的です。ただし、スライドには、UIViewControllers間の通信に関する厳しい警告がいくつかあります。 この深刻なスライドから引用します。http: //cs193p.stanford.edu/downloads/08-NavigationTabBarControllers.pdf ページ16/51: データを共有しない方法 グローバル変数またはシングルトン これにはアプリケーションデリゲートが含まれます 直接的な依存関係により、コードの再利用性が低下します そして、デバッグとテストがより難しい OK。私はそれに落ち込んでいます。ビューコントローラーとアプリデリゲートの間の通信に使用されるすべてのメソッドを盲目的に放り投げたり、アプリデリゲートメソッドでビューコントローラーインスタンスを参照したりしないでください。フェアナフ。 少し先に、このスライドで何をすべきかを説明します。 ページ18/51: データフローのベストプラクティス 把握を正確に伝達する必要があるもの ビューコントローラーの入力パラメーターを定義する 階層を遡って通信するには、疎結合を使用します オブザーバー(委任など)の汎用インターフェースを定義する 次に、このスライドの後にプレースホルダースライドのように見えるスライドが続きます。ここで、講師はUIImagePickerControllerの例を使用してベストプラクティスを明らかに示します。ビデオが利用可能になればいいのに!:( はい、そうです...私のobjc-fuはそれほど強くありません。上記の引用の最後の行にも少し混乱しています。私はこれについてグーグルの私の公平な分け前をしていて、観察/通知技術のさまざまな方法について話しているまともな記事であると思われるものが見つかりました:http : //cocoawithlove.com/2008/06/five-approaches-to -listening-observing.html メソッド#5はデリゲートをメソッドとしても示します!例外...オブジェクトは一度に1つのデリゲートしか設定できません。それで、複数のビューコントローラー通信がある場合、どうすればよいですか? OK、それはセットアップのギャングです。アプリデリゲート内の複数のビューコントローラーインスタンスを参照することで、アプリデリゲートで通信メソッドを簡単に実行できることはわかっていますが、このようなことを正しい方法で実行したいと考えています。 次の質問に答えて、「正しいこと」をしてください。 UINavigationControllerスタックに新しいビューコントローラーをプッシュしようとすると、このプッシュを実行する必要があります。 私のコードのどのクラス/ファイルが正しい場所ですか? 別の UIViewControllerにいるときに、UIViewControllersの1つにあるデータ(iVarの値)に影響を与えたい場合、これを行う「正しい」方法は何ですか? オブジェクトに一度に設定できるデリゲートは1つだけで、講師が「オブザーバー(デリゲートのような)の汎用インターフェイスを定義する」と言ったときの実装はどのようになると想定してください。可能であれば、疑似コードの例が非常に役立ちます。

9
Objective-Cでself = [super init]がnilでないことを確認する必要があるのはなぜですか?
Objective-Cでのinitメソッドの記述に関する一般的な質問があります。 初期化を続行する前に、initメソッドがself = [super init]がnilでないかどうかを確認する必要があることが、どこでも見られます(Appleのコード、書籍、オープンソースコードなど)。 initメソッドのデフォルトのAppleテンプレートは次のとおりです。 - (id) init { self = [super init]; if (self != nil) { // your code here } return self; } どうして? initがnilを返すのはいつですか?NSObjectでinitを呼び出してnilが返された場合、何かが本当にねじ込まれているはずですよね?そしてその場合、あなたはプログラムを書くことすらできないかもしれません... クラスのinitメソッドがnilを返すことは本当にありふれたことですか?もしそうなら、どのような場合に、そしてなぜ?
165 objective-c  null  init 

14
Xcodeデバッガーは、オブジェクトを印刷せず、nilを表示します。
Xcodeは、を使用してオブジェクトを印刷しようとするとエラーを表示しますがpo <objectName>、1つのプロジェクトに対してのみです。 エラー:構造体を具体化できませんでした:変数<varName>のサイズがValueObjectのサイズと一致しません実行でエラーが発生しました、PrepareToExecuteJITExpressionができません Xcodeデバッガーでは、すべてのオブジェクトがnil(self除外されている)とNSLog表示されます(そうでない場合)(図に示すように、正しい出力が表示されます)。プロジェクトの何が悪いのか分かりません。他のすべてのプロジェクトは正常に動作します。 それが何であるか考えていますか?(プロジェクトのクリーンアップは効果がありませんでした。)

7
既存のオブジェクトに拡張子を追加するSwiftファイルに名前を付けるためのベストプラクティスは何ですか?
言語仕様に記載されているように、拡張機能を使用して既存のSwiftオブジェクトタイプに拡張機能を追加することができます。 その結果、次のような拡張機能を作成することが可能です。 extension String { var utf8data:NSData { return self.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)! } } しかし、そのような拡張子を含むSwiftソースファイルの最良の命名規則は何ですか? 以前extendedtype+categoryname.mは、Objective-Cガイドで説明されているように、この規則はObjective-Cタイプに使用するものでした。しかし、Swiftの例にはカテゴリ名String.swiftがなく、それを呼び出すのは適切ではないようです。 だから問題は:上記のString拡張子が与えられた場合、迅速なソースファイルは何と呼ばれるべきですか?
165 ios  objective-c  swift  xcode 

11
メソッド呼び出しを1秒間遅延させるにはどうすればよいですか?
メソッド呼び出しを1秒間遅延させる簡単な方法はありますか? 私が持っているUIImageViewタッチイベントに反応することを。タッチが検出されると、アプリでアニメーションが発生します。1秒後、別のメソッドを呼び出します。この場合、animationDidStopセレクターを使用できません。

13
非表示のUIViewsを持つAutoLayout?
ビジネスロジックによってはUIViews、ほとんどの場合UILabels、を表示/非表示にするのはかなり一般的なパラダイムだと思います。私の質問は、フレームが0x0であるかのように、オートレイアウトを使用して非表示のビューに応答する最良の方法は何ですか?これは、1〜3個の機能の動的リストの例です。 現在、ボタンから最後のラベルまでの上部に10pxのスペースがあります。ラベルが非表示の場合は、上にスライドしません。今のところ、この制約へのアウトレットを作成し、表示しているラベルの数に応じて定数を変更しています。非表示のフレームの上にボタンを押し上げるために負の定数値を使用しているので、これは明らかに少しハックです。また、実際のレイアウト要素に制約されず、他の要素の既知の高さ/パディングに基づいた静的な計算をこっそりと行い、オートレイアウトが何のために構築されたかと明らかに戦うため、それも悪いことです。 動的ラベルに応じて新しい制約を作成することもできますが、これは、いくつかの空白を折りたたみようとするための多くの細かい管理と冗長性です。より良いアプローチはありますか?フレームサイズ0、0を変更し、オートレイアウトに制約を操作せずに機能させるには?ビューを完全に削除しますか? 正直なところ、非表示ビューのコンテキストから定数を変更するだけでは、簡単な計算で1行のコードが必要になります。を使用して新しい制約を再作成すること constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:は非常に重いようです。 2018年2月を編集:UIStackViewsでベンの答えを見る

3
Objective C ++とは何ですか?[閉まっている]
ここで何が尋ねられているのかを知るのは難しい。この質問は、あいまいで、あいまいで、不完全で、過度に広い、または修辞的であり、現在の形では合理的に回答することができません。再開できるようにこの質問を明確にするヘルプについては、ヘルプセンターに アクセスしてください。 7年前休業。 Objective C ++とは何ですか?この言語をXcodeで使用できますか?

12
「宣言されていないセレクター」の警告を取り除く方法
実装されたプロトコルを必要とせずに、NSObjectインスタンスでセレクターを使用したい。たとえば、呼び出されたNSObjectインスタンスがエラープロパティをサポートしている場合にエラープロパティを設定するカテゴリメソッドがあります。これはコードであり、コードは意図したとおりに機能します。 if ([self respondsToSelector:@selector(setError:)]) { [self performSelector:@selector(setError:) withObject:[NSError errorWithDomain:@"SomeDomain" code:1 userInfo:nil]]; } ただし、コンパイラはsetError:シグネチャの周りにメソッドを検出しないため、@selector(setError:)スニペットを含む各行に対して警告を表示します。 Undeclared selector 'setError:' この警告を取り除くためにプロトコルを宣言する必要はありません。これを使用して特別なものを実装するすべてのクラスが必要になるわけではないためです。慣例として、私は彼らにsetError:メソッドまたはプロパティを持たせたいと思っています。 これは可能ですか?どうやって? 乾杯、 EP

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