症状
XcodeのAnalyze(静的コード解析)において以下の警告がでる。
Null passed to a callee that requires a non-null 1st parameter
原因
nil(null)を渡してはならない引数にnilを渡すケースがある。
解決法
全ての動作パスでnilを渡さないように修正する。
XcodeのAnalyze(静的コード解析)において以下の警告がでる。
Null passed to a callee that requires a non-null 1st parameter
nil(null)を渡してはならない引数にnilを渡すケースがある。
全ての動作パスでnilを渡さないように修正する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <!-- 中略 --> <key>UISupportedInterfaceOrientations~iphone</key> <array> <string>UIInterfaceOrientationPortrait</string> </array> <key>UISupportedInterfaceOrientations~ipad</key> <array> <string>UIInterfaceOrientationPortrait</string> <string>UIInterfaceOrientationPortraitUpsideDown</string> <string>UIInterfaceOrientationLandscapeLeft</string> <string>UIInterfaceOrientationLandscapeRight</string> </array> </dict> </plist> |
注:Xcodeからの変更はうまく反映されないため Info.plist をエディタで直接変更する。
旧来の AutoSizing が(デフォルトで)有効になったままで、あたらしい AutoLayout は無効になっている。
UIオブジェクトのプロパティ translatesAutoresizingMaskIntoConstraints が有効になっている。
1 2 3 |
UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; indicator.translatesAutoresizingMaskIntoConstraints = NO; // !!! HERE !!! |
UIViewControllerのtopLayoutGuideプロパティを参照する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
self.upperView.translatesAutoresizingMaskIntoConstraints = NO; self.lowerView.translatesAutoresizingMaskIntoConstraints = NO; NSNumber *vPadding = @0; NSNumber *hPadding = @0; id topGuide = self.topLayoutGuide; UIView *upperView = self.upperView; UIView *lowerView = self.lowerView; NSDictionary *views = NSDictionaryOfVariableBindings(topGuide, upperView, lowerView); NSDictionary *metricsDictionary = NSDictionaryOfVariableBindings(vPadding, hPadding); NSArray *vConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[vPadding]-[topGuide]-[upperView(100)]-[lowerView]-[vPadding]-|" options:0 metrics:metricsDictionary views:views]; [self.view addConstraints:vConstraints]; NSArray *hConstraints1 = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[hPadding[-[upperView]-[hPadding]-|" options:0 metrics:metricsDictionary views:views]; [self.view addConstraints:hConstraints1]; NSArray *hConstraints2 = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[hPadding[-[lowerView]-[hPadding]-|" options:0 metrics:metricsDictionary views:views]; [self.view addConstraints:hConstraints2]; [self.view layoutIfNeeded]; |
https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/
アプリがカメラ機能を使用するにもかかわらず xxx-Info.plist にカメラ機能を使用する理由の記載(NSCameraUsageDescription)がない。
カメラ機能を明示的には使用していないケースであっても、OpenCV(opencv2.framework)を組み込むとカメラ機能を呼び出す(ことができる)バイナリ・オブジェクトがアプリに含まれてしまう。
2017年6月現在
OpenCV 安定板最新: 3.2.0 – Dec 23, 2016 released
2017年6月現在 Xcode 8.2.1, MacOS 10.11 (El Capitan) にてビルド成功
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ファイルはzip形式で圧縮されている。拡張子をzipに変更するかuzipコマンドで直接展開することで中身を参照することができる。
1 |
$ unzip MyApp.ipa |
展開したPayloadの中をotoolでチェックする
1 |
$ cd Payload |
1 2 3 4 5 6 7 8 9 |
$ otool -hv MyApp.app/MyApp MyApp.app/MyApp (architecture armv7): Mach header magic cputype cpusubtype caps filetype ncmds sizeofcmds flags MH_MAGIC ARM V7 0x00 EXECUTE 76 7180 NOUNDEFS DYLDLINK TWOLEVEL BINDS_TO_WEAK PIE MyApp.app/MyApp (architecture arm64): Mach header magic cputype cpusubtype caps filetype ncmds sizeofcmds flags MH_MAGIC_64 ARM64 ALL 0x00 EXECUTE 76 7904 NOUNDEFS DYLDLINK TWOLEVEL BINDS_TO_WEAK PIE |
iOS 8以降に搭載されたQuickType(予測変換)
続きを読む
アルバム | タイプ | サブタイプ |
---|---|---|
自分のフォトストリーム | Album | AlbumMyPhotoStream |
端末で作成したアルバム | Album | AlbumRegular |
iTunesで同期したアルバム | Album | AlbumSyncedAlbum |
カメラロール | SmartAlbum | SmartAlbumUserLibrary |
お気に入り | SmartAlbum | SmartAlbumFavorites |
パノラマ | SmartAlbum | SmartAlbumPanoramas |
ビデオ | SmartAlbum | SmartAlbumVideos |
スローモーション | SmartAlbum | SmartAlbumSlomoVideos |
タイムラプス | SmartAlbum | SmartAlbumTimelapses |