1

iOS 6 専用の Social フレームワークをインポートするには? 他の iOS バージョンの Social Framework を無効にしたい。現在、私はこれを試しており、FrameWork をオプションに変更しようとしましたが、iOS 5.1 シミュレーターでは実行されていません。

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 6.0)
        {
          #import <Social/Social.h>   
        }

iOS 5 と iOS 6 の両方を確認して実行する方法を教えてください。ありがとうございます。

4

2 に答える 2

18

まず、何がサポートされているかを推測するために OS のバージョンを照会しないでください。仮定に基づいて使用するのではなく、特定の機能が実際に利用可能かどうかを確認してください。

そうは言っても、最近のバージョンの iOS とツールチェーンは弱いリンクをサポートしています。使用しようとしているクラスがそうではないことを確認してくださいNil(方法 #1)。これには、Objective-C ランタイムを使用することもできます (方法 #2)。

// method #1 - weak linking
if ([SLRequest class] != Nil) {
    // Social.framework is available
}

// method #2 - querying the runtime
if (NSClassFromString(@"SLRequest") != Nil) {
    // Social.framework is available
}

弱いリンクを有効にするには、このように使用するフレームワークを「必須」ではなく「オプション」として追加する必要があります。Xcode や IDE を使用せず、コマンド ライン ツールチェーンのみを使用する場合は、

-flat_namespace -undefined dynamic_lookup

リンカーに。

于 2012-12-22T11:14:13.403 に答える
2
#import <Avaibility.h>

#if defined(__IPHONE_6_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_6_0
#import <Social/Social.h>
#import <Accounts/Accounts.h>
#elif defined(__IPHONE_5.0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_5_0
#import <Twitter/Twitter.h>
#import <Accounts/Accounts.h>
#else
#error Your SDK is too old ! Need at least 5.0.
#endif
于 2012-12-22T11:25:41.260 に答える