iPhone check firmware version

早过忘川 提交于 2019-11-29 01:58:38

问题


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 )

Is there any way to check which firmware version is used on iPhone and to set different method to use


回答1:


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.




回答2:


As I mentioned in the comments before, check: How to target a specific iPhone version?




回答3:


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.




回答4:


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];
    }


来源:https://stackoverflow.com/questions/845733/iphone-check-firmware-version

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!