相关疑难解决方法(0)

如何查看iOS版本?

我想检查iOS设备的版本是否大于3.1.3 我尝试过的东西:

[[UIDevice currentDevice].systemVersion floatValue]
Run Code Online (Sandbox Code Playgroud)

但它不起作用,我只想要一个:

if (version > 3.1.3) { }
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

objective-c ios

837
推荐指数
13
解决办法
44万
查看次数

在运行时检查iOS版本?

这是我上一期的问题.我正在使用beginAnimations:context:设置动画块来动画一些UITextLabels.但是我在文档中注意到:"在iOS 4.0及更高版本中不鼓励使用此方法.您应该使用基于块的动画方法."

我的问题是我很想使用animateWithDuration:动画:(在iOS 4.0及更高版本中可用)但不想排除使用iOS 3.0的人.有没有办法在运行时检查设备的iOS版本,以便我可以决定使用哪个语句?

iphone cocoa-touch objective-c

45
推荐指数
7
解决办法
4万
查看次数

如何定位特定的iPhone版本?

我有一些代码我想只在最新的iPhone SDK(3.0)上执行,但我似乎无法找到一种方法来定位3.0并忽略2.2.1等.有一个ifdef语句,但它似乎覆盖了整个iPhone:

#if TARGET_OS_IPHONE
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

iphone

36
推荐指数
3
解决办法
4万
查看次数

iOS:我如何知道某个属性是否符合KVO标准?

Key-Value Observing Programming Guide中,注册键值观察部分说:"Apple提供的框架中的典型属性只有符合KVO标准才会被记录." 但是,我没有在文档中找到任何记录为KVO兼容的属性.你能指点一下吗?

具体来说,我想知道,如果@property(nonatomic,retain) UIViewController *rootViewControllerUIWindow是国际志愿者组织兼容.原因是我正在为iOS <4 添加rootViewController属性,UIWindow并想知道我是否应该使其符合KVO标准.

@interface UIWindow (Additions)

#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_4_0
@property (nonatomic, retain) UIViewController *rootViewController;
#endif;

@end

@implementation UIWindow (Additions)

#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_4_0
@dynamic rootViewController;

- (void)setRootViewController:(UIViewController *)newRootViewController {
    if (newRootViewController != _rootViewController) {
        // Remove old views before adding the new one.
        for (UIView *subview in [self subviews]) {
            [subview removeFromSuperview];
        }
        [_rootViewController release];
        _rootViewController = newRootViewController;
        [_rootViewController retain]; …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch objective-c key-value-observing ios4 ios

18
推荐指数
1
解决办法
6656
查看次数

NSXMLParserDelegate编译问题 - iPhone SDK 30. vs 4.0

我的头文件定义如下:

#import <Foundation/Foundation.h>

@interface Warning: NSObject  { 
Run Code Online (Sandbox Code Playgroud)

在我的.m文件中,我做:

NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[parser setDelegate:self];
Run Code Online (Sandbox Code Playgroud)

这编译并在3.0下正常工作.

如果我尝试使用4.0编译,我会收到此错误:

没有实现'NSXMLParserDelegate'协议

如果我添加:

@interface Warning: NSObject <NSXMLParserDelegate>  { 
Run Code Online (Sandbox Code Playgroud)

它用4.0编译好,但是当我尝试用3.0编译时,我得到:

错误:找不到'NSXMLParserDelegate'的协议声明

基础框架正确找到.添加NSXMLParser.h没有帮助.

任何帮助,将不胜感激.

谢谢

iphone

6
推荐指数
1
解决办法
6446
查看次数