2012-07-13 7 views
8

を呼び出すことができる「ユーティリティ」クラスを作成します。のiOSは - どのように私はすべてのコントローラが、私は最高のこの一見単純なタスクを達成する方法があまりにもわからないので、私はiOSとobective-Cに新しいです

class UtilityClass 
{ 
    // Have a method that I can pass parameters to 
    String doCalculation (String art1 , String arg2) 
    { 
     return arg1 + arg2; 
    } 
} 

私の不確実性がある:

1)Xcodeは比較的に私のファイル構造をレイアウトするために傾いているように見える私が欲しいもの

は擬似コードに次のようになりますクラスを作ることです平らな方法。ですから、私はutilsディレクトリを作成し、このファイルをutils/fileNameの下に置かなければなりませんか?通常、私はsrcディレクトリを少なくともいくつか持っていることに慣れていますが、これまで何かを作成するようなメッセージは表示されていません。 2)コントローラからこのクラス/関数をインポートして呼び出すにはどうすればよいですか?

おかげで、 アレックス

+0

ような他のViewControllerにおけるMクラス

#import "Utility.h" @implementation Utility static int number = 1; + (int)getNumber { return number; } + (void)setNumber:(int)newNumber { number = newNumber; } + (id)alloc { [NSException raise:@"Cannot be instantiated!" format:@"Static class 'ClassName' cannot be instantiated!"]; return nil; } @end 

呼び出しは、シングルトンパターンを使用することが適切です/ 2011/12/objective-c-singleton/ – Floydian

答えて

15

ただ、ユーティリティと呼ばれる新しいグループを作成し、その中にあなたのクラスを作成します。同様に、

utils.h 
utils.m 

後でViewControllerのヘッダーファイルに追加します。

#import "utils.h" 

これはutilsの場合、クラスは、ファイル・グループを支える内にある必要があり、という名前のファイルを見つけ、その後、非常に脂肪のプロジェクトに多くのコントローラで使用されています。あなたは、このようなコードブロックを持っているファイルで

YourAppName-Prefix.pch 

#ifdef __OBJC__ 
    #import <UIKit/UIKit.h> 
    #import <Foundation/Foundation.h> 
    #import <CoreData/CoreData.h> 
#endif 

ただ、このブロックを編集して、ここにあなたのutils.hの参照を追加し、この方法では、プロジェクト全体を明示的にインポートせずにutilsのオブジェクトを作成することができます彼ら自身のヘッダー。

このような編集。、あなたがファイルを保存

#ifdef __OBJC__ 
    #import <UIKit/UIKit.h> 
    #import <Foundation/Foundation.h> 
    #import <CoreData/CoreData.h> 
    #import "utils.h" 
#endif 
+0

ありがとう、よくあることは何ですか?多分root_dir/src/utilsのようなものの下に新しいグループを作るには?私はすべてのファンキーな感じのルートディレクトリに私のコントローラを配置しています....ここでディレクトリ構造をレイアウトする良い方法は何ですか? – GeekedOut

+0

それはすべてあなたに依存しますが、それはあなたが望むとにかくグループを作成することができる非常に柔軟です。なぜなら、ファイルをインポートしている間は、それらのグループ名は含まれていないからです。しかし、私はあなたのやり方を標準化し、次のプロジェクトのためにそれを維持することをお勧めします。 – doNotCheckMyBlog

4

はちょうどXCodeのは、それらを見つけるために場所を知っていることを確認してください、あなた次第です。クラス自体は、ちょうどそれがNSObject代わりのグラフィカルクラスのいずれかから継承する、任意の他のObjective Cのクラスと同様に行われるべきである。

// MyClass.h 
@interface MyClass : NSObject { 
    int instanceVar; 
} 
@property (nonatomic, assign) int property; 
@end 

// MyClass.m 
#import "MyClass.h" 
@implementation MyClass 
@synthesize property; 
-(id) init { 
    ... 
} 
-(int) function { 
    ... 
} 
@end 

だけ他のクラスと同様にヘッダをインポートする、別のファイル内のクラスを使用します

#import "MyClass.h" 
7

まず第一には、新しいXcodeでファイルとチェックを外し XIBファイルを作成します。あなたは好きなようにプロジェクトに名前をつけます。それをNSObjectから継承します。 +

ようなインターフェイスに - あなたは、関数の開始を交換する必要が静的メソッドを作成するための

。クラス

@interface Utility : NSObject 
+ (int)getNumber; 
+ (void)setNumber:(int)number; 
@end 

です。http://db-in.com/blog:いくつかのケースで

NSLog(@"number = %d", [Utility getNumber]); 
    [Utility setNumber:3]; 
    NSLog(@"number = %d", [Utility getNumber]); 

for details..

関連する問題