9

私は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)コントローラーからこのクラス/関数をインポートして呼び出すにはどうすればよいですか?

ありがとう、アレックス

4

3 に答える 3

15

Utilitiesという新しいグループを作成し、その中にクラスを作成するだけです。好き、

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
于 2012-07-13T23:46:35.770 に答える
9

まず、Xcodeで新しいファイルを作成し、xibファイルのチェックを外します。プロジェクトに好きな名前を付けます。NSObjectから拡張します。

静的メソッドを作成するには、関数starting-を+likeに置き換える必要があります

インターフェース。クラス

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

.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

他のViewControllerで呼び出します

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

詳細については..

于 2014-08-28T14:04:40.300 に答える
4

ファイルをどこに保存するかはあなた次第です。XCodeがファイルの場所を知っていることを確認してください。クラス自体は、他のObjective Cクラスと同じように作成する必要がありNSObjectます。グラフィカルクラスのいずれかではなく、から継承するようにします。

// 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"
于 2012-07-13T23:49:07.040 に答える