memo」カテゴリーアーカイブ

備忘録

[Obj-C] 反復処理

enumrateObjectsUsingBlockメソッド

block
配列の要素に適用する操作。blockの中が for(;;){ do_anything; } の do_anything に相当する。
obj
配列から取り出した要素。
idx
配列要素のインデックス。forループのカウンター値に相当する。

stop
停止フラグ。stopにYESを代入するとその時点で停止する。forループのbreak文に相当する。

OpenCVを組み込んだiOSアプリが“Missing Info.plist key”を理由にAppStore審査不合格

不合格理由

アプリがカメラ機能を使用するにもかかわらず xxx-Info.plist にカメラ機能を使用する理由の記載(NSCameraUsageDescription)がない。

カメラ機能を明示的には使用していないケースであっても、OpenCV(opencv2.framework)を組み込むとカメラ機能を呼び出す(ことができる)バイナリ・オブジェクトがアプリに含まれてしまう。

続きを読む

Objective-CからSwiftのクラスが参照できない

課題

Objective-CからSwiftのクラスが参照できない。

Use of undeclared identifier 'xxx'

 

チェックポイント

ポイント 1

Objective-C(*.m, *.mm)において ProjectName-Swift.h をインポートしなければならない。

 

ポイント 2

Objective-Cから参照するSwiftで実装するクラスは NSObject の派生クラスでなければならない。

複数の画像ファイルの一括変換する

ImageMagick の mogrifyコマンドを使う

解像度一括変換例

高さ240pxに解像度を一括変換する。

  • -resize : resize the image (box filter)
  • -scale : scale the image (averaged pixels)
  • -sample : scale image with pixel sampling (補間なし)

 

解像度一括変換例

JPEGファイルをPNGファイルへ一括変換する。

XcodeでOpenCVのコンパイルエラー

エラー内容

ヘッダーファイル(*.hpp)において "Expected Identifier" が発生する。

直前のソースコードで以下の警告(Warning)が発生している。

意訳

Apple (Xcode) が提供するヘッダーファイルにおいて "NO" が定義される前に、OpenCVのヘッダーファイルを先に読み込んで "NO;" を定義しなければならない。
続きを読む

“Missing Info.plist key”を理由にAppStore審査不合格

Dear developer,
We have discovered one or more issues with your recent delivery for “xxxxx”. To process your delivery, the following issues must be corrected:
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.
Once these issues have been corrected, you can then redeliver the corrected binary.
Regards,
The App Store team

不合格の直接的理由

アプリがカメラ機能を使用するにもかかわらず xxx-Info.plist にカメラ機能を使用する理由の記載(NSCameraUsageDescription)がない。

続きを読む

ipaファイルのチェック

展開

ipaファイルはzip形式で圧縮されている。拡張子をzipに変更するかuzipコマンドで直接展開することで中身を参照することができる。

 

チェック

展開したPayloadの中をotoolでチェックする

[git] コミットログを検索する

1. コミットメッセージから検索する

実行例

実行例 : 全ブランチ

実行例 : 大小文字区別なし

実行例 : 正規表現

 

2. 修正差分(追加/削除行)で検索する

 

4. オーサー(オリジナルの作成者)で検索する

※ 部分一致可

author : 元々の編集作業を行ったユーザー。cherry-pick や rebaseの元(オリジナル)となるコミットを作ったユーザー。

4. コミッター(最終更新者)で検索する

※ 部分一致可

committer : コミットを作ったユーザー。編集作業をコミットとして反映したユーザー。

5. 例

  • git commit でコミットを作ったときは author = committer となる。
  • git commit --amend でコミットを作った(書き換えた)ときは author はそのまま。 committer は書き換えられる。
  • git cherry-pickgit rebase でコミットを作ったときは author は元のコミットを踏襲する。 committer は書き換えられる。