1

私は iOS 開発にかなり慣れていないので、iOS 4 でアプリケーションを実行しているユーザーが次のコードを実行しようとするかどうか常に疑問に思っていました。

//POST TWEET//
- (void)showTweetSheet
{
    TWTweetComposeViewController *tweetSheet =
    [[TWTweetComposeViewController alloc] init];
    tweetSheet.completionHandler = ^(TWTweetComposeViewControllerResult result) {
        switch(result) {
            case TWTweetComposeViewControllerResultCancelled:
                break;
            case TWTweetComposeViewControllerResultDone:
                break;
        }
        dispatch_async(dispatch_get_main_queue(), ^{
            [self dismissViewControllerAnimated:YES completion:^{
                NSLog(@"Tweet Sheet has been dismissed.");
            }];
        });
    };
    [tweetSheet setInitialText:@"Check out this cool picture I found on @Pickr_"];
    //  Add an URL to the Tweet.  You can add multiple URLs.
    if (![tweetSheet addURL:[NSURL URLWithString:ImageHost]]){
        NSLog(@"Unable to add the URL!");
    }
    [self presentViewController:tweetSheet animated:YES completion:^{
        NSLog(@"Tweet sheet has been presented.");
    }];
}

何が起こるでしょうか?アプリケーションがエラーで終了するだけでしょうか、それともコードが実行されないだけでしょうか? また、OS固有の機能を適切に実装するにはどうすればよいですか? 次のようなものを使用しますか?

NSString *DeviceVersion = [[UIDevice currentDevice] systemVersion];
int DeviceVersionInt = [DeviceVersion intValue];
if (DeviceVersionInt > 5)
{
    //do something.
}
else
{
    //don't do a thing.
}
4

3 に答える 3

7

利用可能かどうかを確認せずに iOS5 の機能を記述すると、iOS 4 でクラッシュします。こんな感じでTwitterを実装してみる

Class twClass = NSClassFromString(@"TWTweetComposeViewController");
if (!twClass) // Framework not available, older iOS
{
    //use iOS4 SDK to implement Twitter framework
}
else {
    //use Apple provided default Twitter framework

}

弱いリンクを含む Twitter フレームワークが追加されていることを確認してください。

于 2012-08-11T05:24:38.743 に答える
1

他のAPIと同じように機能すると思います。以前のバージョンにない関数に対してリンクすると、その関数を呼び出そうとするとプログラムがクラッシュします。したがって、クラッシュを回避するために、デモのようにバージョン スイッチが使用されます。

于 2012-08-11T04:21:30.777 に答える
1

アプリがクラッシュします。iOS ベースの機能を実装する場合は、さまざまな方法を使用できます。この質問を参照してください。

于 2012-08-11T08:00:23.857 に答える