0

これはかなり基本的なことですが、私がやっていることは正しくないと感じているので、専門家に聞いています。

ユーザーがiPhone5を使用しているかどうかを確認するブールメソッドがあります

- (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

ユーティリティクラスに配置します。utility というクラスを作成し、そのクラス内に配置してクラス関数にします。

+(bool)isIPhone5{ method };

このようにして、どこでも使用できます。ユーティリティ クラスでさえ、さらなるプロジェクトで再利用できます。これをビューで使用するには、実装の変更のために関数をロードするか、init の変更がある場合は init 関数を使用します

[className isIPhone5];

ヘッダーをインポートして.hファイルで宣言した場合、結果が得られます

于 2013-01-16T09:38:29.633 に答える
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 に答える
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

クラス メンバー+ (BOOL)isTallを使用し、 で呼び出します[Stuff isTall]。このモジュールにヘルパー クラス メソッドしか含まれていない場合は、これを割り当てる必要- (id)initはなく、 a も不要であることに注意してください。

于 2013-01-16T09:33:48.440 に答える
1

このメソッドをアプリ デリゲートに実装し、結果をブール値として NSUserDefault に格納できます。その後、アプリケーション内のどこからでもアクセスできます。お役に立てれば。

于 2013-01-16T09:37:03.237 に答える