iPhone check firmware version

前端 未结 3 675
时光取名叫无心
时光取名叫无心 2020-12-29 00:51

HI all

I want to make one app for iPhone 2.2.* and for version 3.0. Some method in 2.2* is deprecated in 3.0. ( like UITableViewCell setText and setLabel )

I

相关标签:
3条回答
  • 2020-12-29 00:57

    You will need to use pre-processor directives for the conditional compilation such as __IPHONE_3_0 and build two separate executables.

    For example:

     #ifdef __IPHONE_3_0
     // code specific to version 3
     #else
     // code specific to version 2
     #end
    

    If you need to detect the version at run-time you can use [[UIDevice currentDevice] systemVersion]. It returns the string with the current version of the iPhone OS.

    0 讨论(0)
  • 2020-12-29 01:09

    Alternate solution, just check using respondsToSelector. For example-

    CGSize expectedLabelSize;
        if ([subTitle respondsToSelector:@selector(sizeWithAttributes:)])
        {
            expectedLabelSize = [subTitle sizeWithAttributes:@{NSFontAttributeName:subTitleLabel.font}];
        }else{
            expectedLabelSize = [subTitle sizeWithFont:subTitleLabel.font constrainedToSize:subTitleLabel.frame.size lineBreakMode:NSLineBreakByWordWrapping];
        }
    
    0 讨论(0)
  • 2020-12-29 01:13

    As mentioned in the other referenced thread, while you can use pre-processor directives to generate two applications from one code base, you will still need two applications (one for 2.x and one for 3.x)

    A compile time directive cannot be used to make a run time decision.

    There's more detail in the other thread.

    0 讨论(0)
提交回复
热议问题