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

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


1
ここで「インスタンスメッセージのレシーバータイプ 'CALayer'は転送宣言です」とはどういう意味ですか?
コードのブロックをiOS4プロジェクトからiOS5に移植していますが、ARCで問題が発生しています。このコードは、画面キャプチャーからPDFを生成します。 PDF生成コード UIView *captureView; ... NSMutableData *pdfData = [NSMutableData data]; UIGraphicsBeginPDFContextToData(pdfData, captureView.bounds, nil); UIGraphicsBeginPDFPage(); CGContextRef pdfContext = UIGraphicsGetCurrentContext(); [captureView.layer renderInContext:pdfContext]; UIGraphicsEndPDFContext(); renderInContext行 [captureView.layer renderInContext:pdfContext]; 次のエラーを生成します。 Automatic Reference Counting issue Receiver type 'CALayer' for instance message is a forward declaration ここで何が起こっているのでしょうか?


6
文字列からのObjectiveC解析整数
私は配列から文字列(整数を含む)を抽出し、それを関数のintとして使用しようとしています。intValueを使用してintに変換しようとしています。 これが私が試したコードです。 NSArray *_returnedArguments = [serverOutput componentsSeparatedByString:@":"]; [_appDelegate loggedIn:usernameField.text:passwordField.text:(int)[[_returnedArguments objectAtIndex:2] intValue]]; 私はこのエラーを受け取ります: 「loggedIn :::」の引数3を渡すと、キャストなしで整数からポインタが作成されます どうしましたか?

17
UILabelは、ラベルサイズに合わせてテキストを自動縮小しません
私はこの奇妙な問題を抱えており、8時間以上処理しています。状況に応じてUILabels、動的にサイズを計算する必要があります。 たとえば、UIViewControllerイベントを受け取ってUILabelsサイズを変更します。大きいものから小さいものへ。私のサイズUILabelは小さくなり、適切な必要なサイズが得られますが、私のテキストUILabelは同じまま、同じフォントサイズなどUILabelです。テキスト全体がに収まるように、フォントを小さくする必要があります。だから問題は、私のラベルに合うようにテキストを作成する方法autoshrinkingですか? 私xibでUILabels autoshrinkは、チェックされており、行数も0に設定されており、文字列には新しい行記号(\ n)があり、linebreakmodeを選択してwordwrap。多分誰かが今と同じ状況にいて、私を助けることができましたか?本当にありがたいです。 前もって感謝します! 編集: UILabel最小フォントサイズは10に設定されています

6
NSArrayのディープコピー
を深くコピーできる組み込み関数はありますNSMutableArrayか? 周りを見回してみると、[aMutableArray copyWithZone:nil]作品はディープコピーとして機能すると言う人もいます。試してみたところ、浅いコピーのようです。 現在、私はforループでコピーを手動で行っています: //deep copy a 9*9 mutable array to a passed-in reference array -deepMuCopy : (NSMutableArray*) array toNewArray : (NSMutableArray*) arrayNew { [arrayNew removeAllObjects];//ensure it's clean for (int y = 0; y<9; y++) { [arrayNew addObject:[NSMutableArray new]]; for (int x = 0; x<9; x++) { [[arrayNew objectAtIndex:y] addObject:[NSMutableArray …

9
Xcodeで警告を抑制する方法はありますか?
Xcodeで警告を抑制する方法はありますか? たとえば、ドキュメントに記載されていないメソッドを呼び出していますが、メソッドがヘッダーにないため、コンパイル時に警告が表示されます。ヘッダーに追加して警告を停止できることはわかっていますが、警告を抑制するためにヘッダーに追加する以外に方法があるのではないか(ヘッダーをクリーンで標準に保つことができる)ですか?プラグマか何か?

1
Xcode 9の「この関数宣言はプロトタイプではありません」の警告
Xcode 9を使用する場合、コンパイラの警告がいくつか表示されますThis function declaration is not a prototype。voidメソッド本体に追加することを提案し、それを解決します。私が抱えている問題は、これらの警告がUIApplicationデリゲートメソッドのようなシステムAPIに対してもスローされることです。 - (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo withResponseInfo:(NSDictionary *)responseInfo completionHandler:(void (^)())completionHandler これは、次の方法で解決できます。 - (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo withResponseInfo:(NSDictionary *)responseInfo completionHandler:(void (^)(void))completionHandler 今、私はデリゲートメソッドがまだ長期的に機能するのか、それともAppleがvoid新しいiOS 11ベータ版にを挿入するのか疑問に思っています。void本体を含めると、Xcodeがメソッドセレクターの不一致(これは理にかなっています)について文句を言うので、私は興味があります。これまでに誰かが同じ問題を経験しましたか?

6
UIButtonカスタムフォントの垂直方向の配置
UIButtonビューが読み込まれたときに設定されるカスタムフォントを使用するを持っています。 - (void)viewDidLoad { [super viewDidLoad]; self.searchButton.titleLabel.font = [UIFont fontWithName: @"FONTNAME" size: 15.0 ]; } 私が持っている問題は、フォントが中心線から浮いているように見えることです。この行をコメントアウトすると、デフォルトのフォントが垂直方向に中央揃えで表示されます。ただし、カスタムフォントに変更すると、垂直方向の配置が崩れます。 カスタムフォントのテーブルセルでも同じ問題が発生します。 カスタムフォントの高さが他のフォントほど高くないことをビューのどこかに伝える必要がありますか? 編集:私が使用しているフォントがWindows TrueTypeフォントであることを認識しました。MacのTextEditで問題なく使用できますが、アプリの配置に関する問題のみです

3
ARCで__autoreleasing所有者修飾子を記述する必要があるのはどのような場合ですか?
パズルを完成させようとしています。 __strongNSObject、NSStringなどのすべてのObjective-C保持可能オブジェクトポインタのデフォルトです。これは強力な参照です。ARC -releaseは、スコープの最後でa とバランスをとります。 __unsafe_unretained古い方法に等しい。保持可能なオブジェクトを保持せずに弱いポインターに使用されます。 __weak以下のようなものです__unsafe_unretained、それはポインタが参照されるオブジェクトが割り当て解除されるとすぐにnilに設定されることをオートゼロ弱参照の意味だことを除いて。これにより、ダングリングポインターやEXC_BAD_ACCESSエラーの危険性がなくなります。 しかし、正確には何が__autoreleasing良いのでしょうか?この修飾子を使用する必要がある場合の実用的な例を見つけるのに苦労しています。私はそれが次のようなポインターポインターを期待する関数とメソッドのためだけであると私は信じています: - (BOOL)save:(NSError**); または NSError *error = nil; [database save:&error]; ARCでは、次のように宣言する必要があります。 - (BOOL)save:(NSError* __autoreleasing *); しかし、これは曖昧すぎるため、その理由を完全に理解したいと思います。私が見つけたコードスニペットは、2つの星の間に__autoreleasingを配置しています。タイプはNSError**(NSErrorへのポインターポインター)なので、__autoreleasing単純に前ではなく星の間に配置するのはNSError**なぜですか? また、私が頼らなければならない他の状況があるかもしれません__autoreleasing。

24
UIAlertControllerカスタムフォント、サイズ、色
アラートの表示に新しいUIAlertControllerを使用しています。私はこのコードを持っています: // nil titles break alert interface on iOS 8.0, so we'll be using empty strings UIAlertController *alert = [UIAlertController alertControllerWithTitle: title == nil ? @"": title message: message preferredStyle: UIAlertControllerStyleAlert]; UIAlertAction *defaultAction = [UIAlertAction actionWithTitle: cancelButtonTitle style: UIAlertActionStyleCancel handler: nil]; [alert addAction: defaultAction]; UIViewController *rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController; [rootViewController …

12
Xcode MyProjectName-Bridging-Header.hは存在しません
Objective-CプロジェクトでSwiftを使い始めたいのですが。だから私は迅速なクラスを追加しました: import Foundation @objc class System : NSObject { @objc func printSome() { println("Print line System"); } } そして、それを.mファイルにインポートしました: #import "MyProjectName-Swift.h" プロジェクトをビルドすると、次のエラーが発生します。 Bridging header 'PathToMyProject/MyProjectName-Bridging-Header.h' does not exist 注:[ビルド設定-> Swiftコンパイラ-コード生成-> Objective-Cブリッジヘッダー]で、MyProjectName-Bridging-Header.hに設定されています。 この問題を解決するにはどうすればよいですか? どんな助けでも大歓迎です。 編集:ブリッジヘッダーファイル:#if defined(__ has_include)&& __has_include()#include #endif #include <objc/NSObject.h> #include <stdint.h> #include <stddef.h> #include <stdbool.h> #if defined(__has_include) && __has_include(<uchar.h>) …
118 ios  objective-c  xcode  swift 

14
複数のサブクラスに単一のストーリーボードuiviewcontrollerを使用する方法
UINavigationController最初のビューコントローラーを含むストーリーボードがあるとします。ルートビューコントローラはのサブクラスUITableViewControllerですBasicViewController。これはIBAction、ナビゲーションバーの右のナビゲーションボタンに接続されています 。追加のストーリーボードを作成せずに、ストーリーボードを他のビューのテンプレートとして使用したいと思います。これらのビューはまったく同じインターフェースが、ルート・ビュー・クラスのコントローラを持つことになりますと言うSpecificViewController1とSpecificViewController2のサブクラスですBasicViewController。 これらの2つのビューコントローラーは、IBActionメソッドを除いて同じ機能とインターフェイスを備えています。 次のようになります。 @interface BasicViewController : UITableViewController @interface SpecificViewController1 : BasicViewController @interface SpecificViewController2 : BasicViewController そのようなことはできますか? ストーリーボードをインスタンス化することはできますが、BasicViewControllerサブクラス化するルートビューコントローラーがSpecificViewController1ありSpecificViewController2ますか? ありがとう。


5
iOSスタートバックグラウンドスレッド
iOSデバイスに小さなsqlitedbがあります。ユーザーがボタンを押すと、sqliteからデータをフェッチしてユーザーに表示します。 このフェッチ部分は、バックグラウンドスレッドで実行したい(UIメインスレッドをブロックしないため)。私はそのようにします- [self performSelectorInBackground:@selector(getResultSetFromDB:) withObject:docids]; 取得して少し処理した後、UIを更新する必要があります。ただし、(良い方法として)バックグラウンドスレッドからUIの更新を実行しないでください。私はselectorそうメインスレッドで呼び出す- [self performSelectorOnMainThread:@selector(showResults) withObject:nil waitUntilDone:NO]; しかし、私のアプリは最初のステップでクラッシュします。つまり、バックグラウンドスレッドを開始します。これはiOSでバックグラウンドスレッドを開始する方法ではありませんか? 更新1:[self performSelectorInBackground....このスタックトレースを取得した後、情報はありません- 更新2:私も試し、バックグラウンドスレッドをそのように開始しました [NSThread detachNewThreadSelector:@selector(getResultSetFromDB:) toTarget:self withObject:docids];。 明確にするために、この操作をメインスレッドで実行すると、すべてがスムーズに実行されます... UPDATE 3これは私がバックグラウンドから実行しようとしている方法です - (void)getResultSetFromDB:(NSMutableArray *)toProceessDocids { SpotMain *mirror = [[SpotMain alloc] init]; NSMutableArray *filteredDocids = toProceessDocids; if(![gMediaBucket isEqualToString:@""]) filteredDocids = [mirror FetchDocIdsForMediaBucketWithDocID:filteredDocids mBucket:gMediaBucket numRes:-1]; if(![gMediaType isEqualToString:@""]) filteredDocids = [mirror FetchDocIdsForMediaType:filteredDocids mediaType:gMediaType …

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