这是非常基本的东西,但我正在做的事情感觉不对,所以我问专家。
我有一个布尔方法来检查用户是否在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
。
答案 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");
}