我应该把bool方法放在哪里检查它是否是iphone 5?

时间:2013-01-16 09:30:05

标签: ios objective-c cocoa-touch

这是非常基本的东西,但我正在做的事情感觉不对,所以我问专家。

我有一个布尔方法来检查用户是否在iphone 5上

- (BOOL)isTall { CGRect bounds = [[UIScreen mainScreen] bounds]; CGFloat height = bounds.size.height; CGFloat scale = [[UIScreen mainScreen] scale];
return (([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) && ((height * scale) >= 1136));}

我把它放在另一个名为stuff.m的类中,然后我将它导入到我正在使用的每个其他类中并将其解压缩如下:

- (void)viewDidLoad { [super viewDidLoad]; DataManager *testMe = [[DataManager alloc]init]; if(test.isTall) NSLog(@"Hey");

这是正确的方法吗?似乎应该有更好的方法这样做而不在每个班级中分配testMe

5 个答案:

答案 0 :(得分:3)

将它放在实用程序类中。创建一个名为utility的类,并将其放在该类中,并使其成为类函数。

+(bool)isIPhone5{ method };

通过这种方式,您可以在任何地方使用它。即使实用程序类可以重用于其他项目。 并且使用它在视图中执行加载函数以实现更改或init函数(如果有任何初始化更改)

[className isIPhone5];
如果已导入标题并在.h文件中声明它,

将为您提供结果

答案 1 :(得分:1)

使用班级成员+ (BOOL)isTall并使用[Stuff isTall]进行调用。请注意,当此模块仅包含帮助程序类方法时,您无需再分配它,并且不需要- (id)init

答案 2 :(得分:1)

您可以在app delegate中实现此方法,并将结果存储在NSUserDefault中作为布尔值。然后,您可以在应用程序的任何位置访问它。 希望这会有所帮助。

答案 3 :(得分:1)

每个应用都有一个名为AppDelegate的类,其中包含一个名为:

的方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

}

每当应用程序完成启动时,此方法都会执行。但是你的方法在这里并将BOOL存储在NSUserDefaults中,如下所示:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:self.isIPhone5 forKey:@"isIPhone5"];

然后,您可以通过执行以下操作获取此默认设置的值:

self.isIPhone5 = [defaults boolForKey:@"isIPhone5"];

答案 4 :(得分:1)

您可以在UIApplicationDelegate

中定义它
#define IS_IPHONE5 ((([UIScreen mainScreen] bounds].size.height-568)?NO:YES)

将其导入您选择的班级。

#import "yourAppDelegate.h"

从代码块中你可以做到这一点!

if (IS_IPHONE5) 
{
   NSLog(@"iPhone 5");
}