iOSアプリ開発に関する細かいこと Objective-C編

個別に記事にまとめるほどでもないiOSアプリ開発に関する細かいこと

画像の端をにじませる
Renders with edge antialiasing
画像の端をにじませる
info.plistで設定する

Localizable.strings
NSLocalizedString(@"distanceLabel", nil);
Localizable.strings
"distanceLabel" = "距離";

なぜDeployment Targetの設定箇所は2つあるのか
Deployment Target(アプリ動作可の最低ライン)はPROJECTとTARGETにそれぞれあり、2つあることになる。TARGETのほうは初めは薄い色になってる。PROJECTで設定するとそれに伴いTARGETの値も変わる。別にするメリットも殆ど無いと思うので、設定はPROJECTだけにすればよいと思われる。一度TARGETを何かに設定してしまうと「連携モード」に戻す手段がわからないので、「連携モード」を解除したくないなら触らないほうがいい。

Build SettingsのCode Signing IdentityとProvisioning Profile
Code Signing Identity
証明書の選択。Provisioning fileではない。証明書を選べば対応するProvisioning fileも選ばれることになるので、Provisioning fileの選択と解説される場合もある。Automaticの欄にあるiOS DeveloperやiOS Distributionを選んでおけばその名前で始まるものが自動で選ばれる。
Provisioning Profile
Automaticになっていれば自動で選ばれる(上で指定されている証明書とBundle Identifierを基に選ばれるのかと思われる)。

statusBarOrientation
[[UIApplication sharedApplication] statusBarOrientation]
viewDidLoadで正確な値が取得出来るかどうかは要調査。

複数引数メソッドの遅延処理
double delayInSeconds = 1.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self 複数引数メソッド];
});

- (void)複数引数メソッド
{

}

Architectures
CPUによって受け付ける命令が違う。その分類に付けられた名前と対応するCPUの組み合わせは
armv6 : かなり初期の頃のiPhoneなど
armv7 : A4ちょい前、A4、A5〜
armv7s : A6〜
arm64 : A7〜

standard : 共通のバイナリを使う方向でビルド
optimize : バイナリを個別に用意する方向でビルド

自分のソースの中でDeprecateになった部分を知りたい
Deployment Targetを一時的に最新にする

Status Barはどう消すの?(iOS7以降)
設定箇所は3箇所
1. targetのHide during application launch
2. plistのView controller-based status bar…
3. ViewController内の- (BOOL)prefersStatusBarHiddenメソッド

1がlaunch(アプリ立ちあげ時の数秒)の時どうするか
2がアプリが立ち上がってからどうするか、ViewControllerで指令を出すならYESにする。NOにすると1の設定をアプリ立ちあげ後も引き継ぐ。plistに書かないとYESとして実行する現象あり。しかしplistに追加すると初めの時点でNO。まあ、書いておくのが無難。
3、2をYESにしたときに各ViewController内でYES NOを指定すると細かい設定が行える。

OSバージョン
NSString *osversion = [UIDevice currentDevice].systemVersion;
NSArray *versionArray = [osversion componentsSeparatedByString:@"."];
systemVersionLarge = [(NSString *)[versionArray objectAtIndex:0] intValue];

向きの設定(plistとTARGET)
向きの設定はplistとTARGETの2箇所で出来る。
TARGETでも設定出来るが対応DevicesがiPhone iPad Universalのどれなのかによってこれとplistの設定項目との関係が決まる。
TARGETのDevices - plist
iPhone - Supported interface orientations
iPad - Supported interface orientations(iPad)
Universal - Supported interface orientations
Universalの時にTARGETで設定を変えてもSupported interface orientations(iPad)には影響しないので気にしないでほっとくこと(気になるならSupported interface orientations(iPad)を消す)。

コメント