9

我是 iOS 和 obctive-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 扩展它。

要创建静态方法,您必须将函数开头替换为 + 之类

界面。班级

@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 回答