-2

だから私は一般的な質問があります。void の関数、NSString* を返す関数、NSDictionary* を返す関数など、たくさんの関数があります。これらの関数をさまざまなクラスで使用しています。それらを使用するクラスに含めることができるライブラリ .m ファイルを作成したいだけなので、これらの関数をあちこちにコピーして貼り付ける必要はありません。これは難しいことではないと確信していますが、無効な関数以外ではこれを機能させることができないようです。

例:

//Library.h
(NSString*)doStuff{
    NSString* test = "hello world";
    return test;
}

(void)print{
    NSLog(@"Hi");
}

基本的に、インポートステートメントを使用できるファイルが1つ欲しいのですが、obj cでこれが可能かどうかは不明です。

ロビン

4

2 に答える 2

1

プレーンな古いCスタイルを使用できます。

// ======== yourlib.h =========
#import <Foundation/Foundation.h>
NSString *doStuff();
void print();


//======== yourlib.m =========
#import "yourlib.h"
NSString *doStuff(){
    NSString *test = @"hello world";
    return test;
}

void print(){
    NSLog(@"Hi");
}

または、カテゴリ機能を使用して、既存のフレームワークにアタッチできます。

// ======= youlib.h ========
#import <Foundation/Foundation.h>
@interface NSString (YourCategory)
+ (NSString *)someStringFromString:(NSString*)string;
- (NSDictionary *)someDictionaryFromString;
@end
// ======= yourlib.m =======
#import "yourlib.h"
@implementation NSString(YourCategory)
+ (NSString *)someStringFromString:(NSString*)string {
   ...
   return aString;
}
- (NSDictionary *)someDictionaryFromString {
   ...
   return aDict;
}
@end
于 2012-06-25T07:03:50.080 に答える
0

クラスメソッドを使用します。クラスですべての一般的な関数を記述しますLibrary

  //Library.m

+(NSString*)doStuff{
    NSString* test = "hello world";
    return test;
}

+(void)print{
    NSLog(@"Hi");
}


#import "Library.h"
@implementation ClassA

-(void)MethodA
{
 [Library doStuff];
 [Library print];
}
于 2012-06-25T07:02:08.547 に答える