Brew the Mash

クラフトビール好きなITエンジニア@mashmorgan_jpの開発メモなど

【iOS】Swift4対応したらKVOが動かなくなった件

個人メモです。

XCode9にアップデートしてSwift4の自動変換をかましたらKVO関連の処理が動かなくなってしまいました。 addobserverなどで使用している#selectorと#keypathがdeprecateらしく警告されますが、エラーにはならないのでひとまずそのままビルド。 するとどうやらKVOがまったく動作していない模様。。。

結論から言うと自分の確認ミスでした。 Swift4の自動変換をかました際に、dynamicがdeprecatedになったため削除してしまっていたようです。 「@objc dynamic」を追加することで動作確認できました。

// Swift3
dynamic var hoge :String = "aaa"

// Swift4(誤)
var hoge :String = "aaa"

// Swift4(正)
@objc dynamic var hoge :String = "aaa"

KVOはdynamic指定しないと動作しないという基本を忘れていました。。。 Observer処理を全部差し替えすることも考えましたが今回は回避できました。 が、そろそろ時間を見つけて最新対応しなければXCode10あたりで泣きを見ることになりそうです。 (宿題が増える一方ですね)

【Mac】KiCadのFreeRouter(freerouting)でJavaエラーが発生してしまう

先日、KiCadセミナーを受講したのですが、その際にMac環境ならでは?なのか、標題の問題に悩まされました。受講後に調べてなんとか解決できたのでメモがてら記載しておきます。

環境

  • MacOS Sierra 10.12.6
  • KiCad 4.0.7 (stable)
  • Java8 (build1.8.0_144-b01)

KiCadのpcbNewにて、freerouting*1を使おうと思い、事前設定を行いこのサイト からfreerouting.jarをDLして実行してみたが 以下のエラーが発生。

java.lang.ClassException: java.awt.geom.Rectangle2D$Double cannot be cast to java.awt.Rectangle

どうやらJava環境は問題ないみたいだが、jarファイル側の修正が必要そう。

日本語の情報があまりなかったので海外サイトをみてみると、ここにそれっぽい記載が。

https://www.bountysource.com/issues/45463145-java-awt-geom-rectangle2d-double-cannot-be-cast-to-java-awt-rectangle

ここのコメントを参照し、以下より新しいjarファイルを取得したところ私の環境では無事動作しました(回答者はまだ動かないと記載してましたが)。お困りの方いらっしゃればこれで解決できるかと思います。

https://github.com/freerouting/freerouting/files/1282814/freeroute.jar.zip

*1:※FreeRouterとは、KiCadで自動配線してくれる便利ツールです

【iOS】iTunes Connectにアップロードしたはずのビルドが表示されない件

標題の件で小1時間悩んだので結果をメモしておきます。

環境

Archive作成時やiTunes Connectへのアップロード時は特にエラーが表示されずSuccessとなっていましたが、何故かiTunes Connect側のビルドに待っても待っても表示されませんでした。

Appleからのメールを見ればわかったんですが以下の状態でした。

Missing Info.plist key - This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.

つまりInfo.plistのPrivacy設定が足りてなかったんです。 (それならビルド時にエラー出して欲しかった。。。)

Info.plistを修正して再度アップロードすると無事にiTunes Connectのビルドに表示されました。

【Mac】SierraにアップデートしたらKarabinerが動作しなくなった問題

そろそろアップデートするかと手を出したものの、キー操作とマウス操作が変わってる。。。 というかKarabinerが動作してないことが判明。 このままだと通常業務に支障が出るので対策を調べてみた。

まあKarabinerは現在アップデート中らしいのでそれを信じるとしてつなぎで使えるものをご紹介。

IME切替

 →「⌘英かな.app」

⌘英かな

・BTマウスのスクロール方向変更

 →「Scroll Reverser.app」

Scroll Reverser for macOS

使った感想としてはむしろKarabinerが不要・・・? そこまでガッツリカスタマイズしていない方にはオススメです。

【iOS】Swift3+XCode8に変換した際に発生したエラーの対応

(メモレベルで申し訳ございません) 私も遅ればせながら過去プロジェクト(Swift2+XCode7)を変換したら大きく以下3つのエラーが発生。 それぞれ対応した内容をメモしておきます。

1. "Ambiguous use of init"が発生

"Ambiguous use of init"は以下で対応。「_ = 」をつけただけ。 https://stackoverflow.com/questions/39579121/swift-3-and-xcode8-ambiguous-use-of-init

2. iTunes Connectにアップロード後にWatchKitのPNG画像がダメよメール

WatchKitで使用していたPNGにアルファが含まれていたため削除。 →私はMacなのでプレビューからアルファのチェックをOFFにして書き出し。

3. CoreBluetoothを使用していたらplistに記載が足りないメール

NSBluetoothPeripheralUsageDescriptionをplistに追加しろうんたらとメールが来ました。 以下参照にplistにStringを追加したら通りました。 http://dev.classmethod.jp/smartphone/iphone/ios10-privacy-data-purpose-description/

取り急ぎ同じ悩みの方へご参考までに。

【Mac】FileZillaでFTP接続が異常に遅かった件

自分用のメモ。 FileZillaを使ってて、あるサーバーだけ異常に接続とか転送が遅かったのでサーバー要因だと思ってましたが、ログと設定をよく確認してみたらSFTPでなくFTPで接続していたのでセキュリティ警告が発生してました。。。 完全に自分の設定ミスですがこういうところは意外と見落としがちなので気をつけよう。(自戒)