0

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

我有一个布尔方法来检查用户是否在 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在每个班级中分配。

4

5 回答 5

3

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

+(bool)isIPhone5{ method };

通过这种方式,您可以在任何地方使用它。甚至实用程序类也可以重用于进一步的项目。并使用它来查看是否加载函数以更改实现或初始化函数(如果有任何初始化更改)

[className isIPhone5];

如果您已导入标头并在 .h 文件中声明,将为您提供结果

于 2013-01-16T09:38:29.633 回答
1

使用类成员+ (BOOL)isTall并使用[Stuff isTall]. 请注意,当此模块仅包含辅助类方法时,您不需要分配它,- (id)init也不需要 a。

于 2013-01-16T09:33:48.440 回答
1

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

于 2013-01-16T09:37:03.237 回答
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"];
于 2013-01-16T09:40:11.757 回答
1

你可以在你的UIApplicationDelegate

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

将其导入您选择的班级。

#import "yourAppDelegate.h"

您只需在代码块中执行此操作!

if (IS_IPHONE5) 
{
   NSLog(@"iPhone 5");
}
于 2013-01-16T09:43:44.030 回答