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

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

7
NSUserDefaultsにカスタムオブジェクトを保存する方法
さて、私はいくつかのことをやっています、そして私は自分の問題に気付きましたが、それを修正する方法がわかりません。一部のデータを保持するカスタムクラスを作成しました。私はこのクラスのオブジェクトを作成し、セッション間で持続させる必要があります。すべての情報をに入れる前はNSUserDefaults、これは機能しません。 -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '<Player: 0x3b0cc90>' of class 'Player'. これは、カスタムクラス「Player」をに配置したときに表示されるエラーメッセージNSUserDefaultsです。今、私は明らかにNSUserDefaultsいくつかのタイプの情報しか保存していないことを読みました。それで、どのようにしてオブジェクトを入れNSUSerDefaultsますか? カスタムオブジェクトを "エンコード"して配置する方法があるはずだと読みましたが、実装方法がわからないので、助けていただければ幸いです。ありがとうございました! ****編集**** 承知しました。以下のコードを使用して作業を行いました(ありがとうございます)。しかし、まだ問題がいくつかあります。基本的に、コードは今クラッシュしますが、エラーが発生しないため、理由はわかりません。おそらく、基本的なものが欠けていて、疲れすぎているかもしれませんが、それはわかります。これが私のカスタムクラス「Player」の実装です。 @interface Player : NSObject { NSString *name; NSNumber *life; //Log of player's life } //Getting functions, return the info - (NSString *)name; - (int)life; - (id)init; //These are the setters - (void)setName:(NSString …

26
iOS7でステータスバーを非表示にできない
iPhone 5 iOS 7を4ベータ版にアップグレードしました。このiPhoneでXcode 5からアプリを実行すると、ステータスバーが非表示になりませんが、非表示になりません。 機能していない: [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade]; 機能していない: [UIApplication sharedApplication].statusBarHidden = YES; Apple開発者フォーラムにログインできません

16
isEqual:およびハッシュをオーバーライドするためのベストプラクティス
isEqual:Objective-Cではどのように適切にオーバーライドしますか?「キャッチ」は、2つのオブジェクトが等しい場合(isEqual:メソッドによって決定される)、それらは同じハッシュ値を持つ必要があるようです。 Cocoa Fundamentals GuideのIntrospectionセクションには、オーバーライドする方法の例があり、次のようにコピーされます。isEqual:MyWidget - (BOOL)isEqual:(id)other { if (other == self) return YES; if (!other || ![other isKindOfClass:[self class]]) return NO; return [self isEqualToWidget:other]; } - (BOOL)isEqualToWidget:(MyWidget *)aWidget { if (self == aWidget) return YES; if (![(id)[self name] isEqual:[aWidget name]]) return NO; if (![[self data] isEqualToData:[aWidget data]]) return NO; return …


30
デバイスがiPhone Xかどうかを検出する
私のiOSアプリはカスタムの高さを使用しているためUINavigationBar、新しいiPhone Xで問題が発生します。 アプリがiPhone Xで実行されているかどうかをプログラムで(Objective-Cで)確実に検出する方法を誰かがすでに知っていますか? 編集: もちろん、画面のサイズをチェックすることは可能ですが、TARGET_OS_IPHONEiOSを検出するような「組み込み」の方法があるのでしょうか... if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) { CGSize screenSize = [[UIScreen mainScreen] bounds].size; if (screenSize.height == 812) NSLog(@"iPhone X"); } 編集2: 私の質問はリンクされた質問の複製であるとは思いません。もちろん、現在のデバイスのさまざまな特性を「測定」し、その結果を使用してどのデバイスを使用するかを決定する方法があります。しかし、私が最初の編集で強調しようとしたので、これは私の質問の実際のポイントではありませんでした。 実際の質問は次のとおりです。「現在のデバイスがiPhone X(たとえば、SDK機能によって)であるかどうかを直接検出することはできますか、それとも間接測定を使用する必要がありますか?」 これまでの回答では、「いいえ、直接的な方法はありません。測定が進むべき道」と答えています。

25
Objective-C内ではSwiftクラスを使用できません
Swiftアプリにコードを統合しようとしています。アプリは記述されてObjective-Cおり、Swiftクラスを追加しました。ここで説明されているすべてを行いました。しかし、私の問題はXcode、-Swift.hファイルを作成していないことです。ブリッジングヘッダーのみです。作成しましたが、実際は空です。私はすべてのObjCクラスをSwiftで使用できますが、その逆はできません。迅速なクラスにマークを付けましたが、@objc役に立ちませんでした。私は今何ができますか? 編集:Appleは次のように述べています。 "SwiftコードをObjective-Cにインポートする場合、Xcode-generatedヘッダーファイルを使用してそれらのファイルをObjective-Cに公開します。[...]このヘッダーの名前は、製品モジュール名で、その後に「 -Swift.h」。 " 今、そのファイルをインポートしようとすると、エラーが発生します。 //MainMenu.m #import "myProjectModule-Swift.h" //Error: 'myProjectModule-Swift.h' file not found @implementation MainMenu これが私のFBManager.swiftファイルです。 @objc class FBManager: NSObject { var descr = "FBManager class" init() { super.init() } func desc(){ println(descr) } func getSharedGameState() -> GameState{ return GameState.sharedGameState() //OK! GameState is written in Objective-C and no error …
260 ios  objective-c  swift 

16
iOSはユーザーがiPadを使用しているかどうかを検出します
私はiPhoneとiPod Touchで動作するアプリを持っています。それはRetina iPadとすべてで動作しますが、1つの調整が必要です。現在のデバイスがiPadかどうかを検出する必要があります。ユーザーが私の中UIViewControllerでiPadを使用しているかどうかを検出し、それに応じて何かを変更するには、どのコードを使用できますか?
260 ios  objective-c  swift  ipad  device 


14
単一のUILabel内の太字と太字以外のテキスト?
太字テキストと太字以外のテキストの両方をuiLabelに含めるにはどうすればよいでしょうか。 私はUIWebViewを使用したくありません。NSAttributedStringを使用してこれが可能である可能性があることも読んだことがありますが、それを使用する方法がわかりません。何か案は? Appleはいくつかのアプリでこれを実現しています。スクリーンショットの例: ありがとう!-ドム

4
メインスレッドでタスクを実行するGCD
任意のスレッドからのコールバックがあります。このコールバックを受け取ったら、メインスレッドで特定のタスクを実行したいと思います。 私がすでにメインスレッドにいるかどうかを確認する必要がありますか?または、以下のコードを呼び出す前にこのチェックを実行しないことによるペナルティはありますか? dispatch_async(dispatch_get_main_queue(), ^{ // do work here });

30
iOSで最上位のView Controllerを見つける方法
「最上位の」ビューコントローラー(現在のビューを担当するビューコントローラー)を見つけることができると便利な場合がいくつかありますが、それを行う方法が見つかりません。 基本的に課題はこれです:ビューコントローラー(またはビュー)ではない[アクティブなビューのアドレスを持たない] クラスで実行されており、最上位のビューコントローラーのアドレスが渡されていない(または、たとえば、ナビゲーションコントローラのアドレス)、そのビューコントローラを見つけることは可能ですか?(そして、もしそうなら、どうですか?) それとも失敗すると、最上位のビューを見つけることは可能ですか?


6
常に自己の弱い参照をARCのブロックに渡しますか?
Objective-Cでのブロックの使用について少し混乱しています。私は現在ARCを使用しており、アプリには非常に多くのブロックがあり、現在は常にself弱い参照ではなく参照しています。これが、これらのブロックselfが割り当て解除されないように保持および保持する原因となる可能性がありますか?問題は、ブロック内のweak参照を常に使用する必要selfがあるかどうかです。 -(void)handleNewerData:(NSArray *)arr { ProcessOperation *operation = [[ProcessOperation alloc] initWithDataToProcess:arr completion:^(NSMutableArray *rows) { dispatch_async(dispatch_get_main_queue(), ^{ [self updateFeed:arr rows:rows]; }); }]; [dataProcessQueue addOperation:operation]; } ProcessOperation.h @interface ProcessOperation : NSOperation { NSMutableArray *dataArr; NSMutableArray *rowHeightsArr; void (^callback)(NSMutableArray *rows); } ProcessOperation.m -(id)initWithDataToProcess:(NSArray *)data completion:(void (^)(NSMutableArray *rows))cb{ if(self =[super init]){ dataArr = [NSMutableArray arrayWithArray:data]; …



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