0

コードのみをコンパイル/実行する方法について多くの例を見つけることができます.iOSバージョンは>何かですが、どうすればそれを逆に行うことができますか? シミュレーターで iOS 5.0 を実行して、次のことを試しました。

#if __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_6_0
// Code for iOS < 6.0 here
#endif

ただし、内部のコード#if - #endifはシミュレーターの iOS 5.0 では実行されません。これどうやってするの?

[編集] わかりましたので、何が欲しいのかわかりませんでした。申し訳ありません:)問題は、デバイスがiOS <6.0を実行している場合にのみ、UITableViewDelegateでこのコードを実行することです:

-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
}

これは、iOS < 6 を実行している場合は何らかのスタイリングを行いたいためですが、iOS 6 では、このスタイリングをはるかに簡単に行うことができます。しかし、このメソッド内での実行時のバージョン チェックは、遅すぎるため、私が実際に望んでいるものではありません。

ありがとうござい
ます

4

2 に答える 2

7

違いがあります

  1. 特定の SDK に対してコンパイルしている場合のコンパイル時のチェックと
  2. コードが実行されている OS を確認する

__IPHONE_6_0 マクロをチェックすると、コンパイル対象のターゲットがチェックされるだけです...それはあなたが望むものですか? その場合、iOS 6 用にコンパイルしていない#ifndef __IPHONE_6_0かどうかを確認するために使用できます。

コードが実行されている OS を知りたい場合は、MSK の回答を確認できます。

于 2013-03-21T07:59:46.997 に答える
3

これは、コンパイル時ではなく実行時のチェックです。

#define SYSTEM_VERSION_LESS_THAN(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)

のように使う

if(SYSTEM_VERSION_LESS_THAN(@"6.0")) {

}

于 2013-03-21T07:56:52.457 に答える