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类一样,只是使它从NSObject
inheritance,而不是其中一个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"
- iOS5:在UIWebView模式UIViewController播放Youtubevideo的例外
- 在联系人保存联系人之前如何查看是否添加组织名称?
- UIScrollView中的UILabel中的像素化文本,都具有透明背景
- 如何将数据从一个视图传递到IOS中的另一个视图控制器?
- UINavigationController强制旋转
- UIBarButtonItem的setBackgroundImage通过外观不适用于其他UIControlStates
- 跨类创build一个全局对象
- 我怎样才能解决NSInvalidUnarchiveOperationException
- 如何:在MKMapView上显示MKOverlay