将棋プログラミング

(将棋に関する)ソフトウェア開発のノウハウ等。

Objective-C

iOS WKWebView のクッキーを処理する

Objective-C のコード例が殆どないので、記録しておく。 1.WKWebView のクッキーを取得する if (@available(iOS 11.0, *)) { [WKWebsiteDataStore.defaultDataStore.httpCookieStore getAllCookies:^(NSArray<NSHTTPCookie *> *aCookies) { NSLog(@"aCookies=%@", aCookies</nshttpcookie>…

iOS の Objective-C で UTType を使う

iOS の Objective-C で、例えば、次のように UTType を使う場合、 NSArray *theTypes = [UTType typesWithTag: @"extension" tagClass: UTTagClassFilenameExtension conformingToType: nil];次の import が必要だった。 #import <UniformTypeIdentifiers/UniformTypeIdentifiers.h>リンク時、次のエラーになっ</uniformtypeidentifiers/uniformtypeidentifiers.h>…

iOS - UITableView の detailTextLabel を更新

UITableView の表示を更新するためには、通常、次のコードを実行する(UITableViewController の場合)。 [self.tableView reloadData];以前は問題なかったが、 Xcode 13 で作成し、iOS 15 で実行すると、なぜか、このコードを実行しても detailTextLabel が…

Objective-C での iOS 15 対応

Xcode 13 で、iOS 15 に対応する際に必要になった変更をまとめる。 最近のコードの例は、殆ど Swift なので、Objective-C のコード例が役に立つ人もいると思う。 1. ナビゲーションバー・ツールバーの色が変わる scrollEdgeAppearance を指定する。developer…

iOS 13 以降、UITableView の scrollToRowAtIndexPath が正しく動作しない場合がある

iOS 13 以降、UITableView の scrollToRowAtIndexPath が正しく動作しない場合がある。 最初に気がついたのは、iOS 13 になったとき、iPad では、scrollToRowAtIndexPath が正しく動作しなくなった時であった。 この時、animated が NO だと問題があり、YES …

iOS の開発で Undefined symbols

iOS での開発中、次のエラーが出た。 Undefined symbols for architecture armv7: "_OBJC_CLASS_$_WKWebView", referenced from:WebKit.framework をリンクし、解決した。さらに、次のエラーが出た。 Undefined symbols for architecture x86_64: "_OBJC_CLA…

UIWebView から WKWebView への書き換え:iOS 9 で異常終了

2020年12月から、UIWebView は使えず、WKWebView に書き換えなければならない。 ITMS-90809: Deprecated API Usage - App updates that use UIWebView will no longer be accepted as of December 2020. Instead, use WKWebView for improved security and r…

iOS の等幅フォント

iOS の通常のフォントは、半角空白が等幅でないが、iOS 13 から、半角空白を含め、等幅なフォントが使えるようになった。 1. monospacedDigitSystemFontOfSize: weight: iOS 9.0 以降では、このフォントが使えるが、半角空白は等幅でない。 https://develope…

iOS 和暦の落とし穴

iOS で、西暦年を取得する際、大きな落とし穴がある。 これが原因で、10年程前にトラブルが起き、以来、注意していたが、最近も失敗してしまった。iOS の Objective-C で、西暦年を4桁の数字で取得する際、次のようなコードとなる。 NSDateFormatter *forma…

iOS 13 のダークモードへの対応(ダークモードにしない)

Xcode 10.2 以降、旧CPUに対する最適化にバグがあるので、Xcode 10.1 を使い続けていたが、2020年4月からは、いよいよ Xcode 11 以降で作成しないと、App Store に提出できなくなる。 ykakinoki.hateblo.jp ITMS-90725: SDK Version Issue - This app was b…

Xcode 11 で作成した Mac アプリケーションは applicationWillTerminate が呼ばれない

Xcode 11 で作成した Mac アプリケーションでは、applicationWillTerminate と applicationShouldTerminate が呼ばれないことに気が付いた。 ファイルをドロップしたりすると、呼ばれる場合がある。 これらが呼ばれないと、アプリケーション終了時にデータを…

iOS版 VLCKit MobileVLCKit で音声を消す

MobileVLCKit (Version 3.1.0) で音声を消す場合のコード VLCMediaPlayer *_mediaPlayer = [[VLCMediaPlayer alloc] init]; _mediaPlayer.audio.muted = YES; // 音声を消す

Xcode 10.2 の最適化のバグ

Xcode が 10.2 にアップデイトされ、それでアプリをリリースしたところ、一部の機種で動作が異常になった。 問題を確認できた機種は、iPhone 4s や iPad 3代目である。恐らく、32bit CPU の機種だろうと思われる。 ソースを変更していない部分で起きた問題…