iOS – 我如何创build一个所有控制器可以调用的“实用程序”类

我是iOS和obective-c的新手,所以我不太清楚如何最好地完成这个看似简单的任务。

我想要的是在伪代码中创build一个如下所示的类:

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下? 通常我习惯于至less有一些src目录,但到目前为止我还没有任何提示创build一个。 2)如何从我的控制器导入和调用这个类/函数?

谢谢,Alex

只需创build一个名为Utilities的新组,然后在其中创build您的类。 喜欢,

 utils.h utils.m 

稍后在ViewController的头文件中添加。

 #import "utils.h" 

如果这个utils类被很多控制器在很胖的项目中使用,那么find一个叫做的文件,应该在里面支持文件组。

 YourAppName-Prefix.pch 

在那个文件中你有这样的代码块,

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

只需编辑这个模块并在这里添加你的utils.h引用,这样你的整个项目就可以创buildutils对象,而不需要显式地导入到它们自己的头文件中。

像这样编辑。,

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

首先在Xcode中创build一个新的文件,并取消选中 xib文件。 根据您的喜好命名项目。 并从NSObject扩展它。

为创build静态方法,你必须replace函数开始 – 到+像

接口。 类

 @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]); 

详情..

在哪里存储文件取决于你,只要确保XCode知道在哪里可以find它们。 类本身应该像任何其他Objective C类一样,只是使它从NSObjectinheritance,而不是其中一个graphics类:

 // 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"