我是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 :(得分: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
答案 1 :(得分:7)
首先在Xcode中创建一个新文件,然后取消选中 xib文件。根据需要为项目命名。并从NSObject扩展它。
用于创建静态方法,你必须替换函数start - to + like
接口。类
@interface Utility : NSObject
+ (int)getNumber;
+ (void)setNumber:(int)number;
@end
.m class
#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]);
答案 2 :(得分: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"