1.0-----3.创建和使用类
创建和使用类
一类是可以有方法,实例变量和属性,以及许多其他功能的数据结构,但是现在我们只是要谈的基本知识。每一个类都必须遵循以下规则:
•这个类必须从父类派生,除了少数例外,如NSObject的和NSProxy类,这是根类。根类没有父类。
•它必须有一个符合 Cocoa的方法命名规则的名称。
•它必须有一个定义的类的接口的接口文件。
•它必须有,你实现你已经答应了类的接口来提供功能的实现。
NSObject是几乎每一个其他类继承的根类。在这个例子中,我们将添加一个类,命名人,要我们在创建项目“Creating and Running Our First iOS App”在第二页。我们将然后添加两个属性一到这个类页上,被称为名类型的NSString和姓氏,。请按照下列步骤来创建和Person类添加到项目中:
1,在Xcode,而你的项目是开放的,在你的面前,从文件菜单中选择新建→文件...
2,在左侧面,确保在您所选择的Cocoa Touch类iOS的主要部分。一旦这样做,选择的Objective-C类项目,然后按[下一步]按钮。
3,在类部分,输入Person。
4,在“Subclass of”选项,选择NSObject。
5,一旦完成后,按[下一步]按钮,此时的Xcode会讯问,你想保存这个文件。只需将新的类保存到你放置你的项目和它的文件的文件夹。这是默认的选择。然后按创建按钮,就大功告成了。
现在,您可以添加到您的项目中的两个文件:Person.h和Person.m。前者是接口,而后者是实现文件的Person类。在Objective-C语言中,.h文件是头文件,在其中定义的每个类的接口,.m文件是你写的类的实际实现的实现文件。
现在,让我们进入我们的Person类的头文件,并在类中定义的类型的NSString的两个属性,:
@interface人:NSObject的
@属性(非原子,副本)的NSString*名;
@interface Person : NSObject
@property (nonatomic, copy) NSString *firstName;
@property (nonatomic, copy) NSString *lastName; @end
就像一个变量,属性的定义,有它自己的格式,在这个特定的顺序:
1,属性的定义由@property关键字开始。
2,然后,您需要指定属性的关键字。非原子(nonatomic) 属性不是线程安全的。我们将讨论在第16章中的线程安全,您还可以指定分配,复制,弱,强或unsafe_unretained,(assign, copy, weak, strong, unsafeunretained)的关键字。很快我们将了解更多关于这些。
3,然后,您必须指定属性,如NSInteger的或NSString的数据类型。
4,最后但并非最不重要的,你必须指定属性的名称。该属性的名称必须遵循苹果的指导方针。
我们说,属性可以有不同的修饰词。下面是你需要知道的重要的限定词:
strong
这种类型的属性将被运行时被保留。这些只能是类的实例。换句话说,你不能持有(retain)一个值类型强strong的属性,如果该值是一个原始的。你可以保留retain对象,但不原始值。
copy
像strong一样,但是当赋予这个类型的属性,运行时将对象的副本放在一左边。在赋值的右边的对象必须符合NSCopying或NSMutable复制协议。
assign
对象或原始值设置为指定的类型的属性值不会被copy复制或持有retain。对于原始的性质,这种关键字将创建一个内存地址,你可以存放原始数据。对于对象,这种类型的属性将简单地指向在等式的右边的对象。
unsafe_unretained
和assign限定符相同。
weak
同assign有一个很大的区别。在对象的情况下,当分配给该类型的属性的对象从内存中释放,运行时会自动设置该属性为nil的值。
我们现在有两个属性一个Person类:Firstname和LastName。让我们回到我们的应用程序委托的实现(AppDelegate.m)文件,并实例化Person类型的对象:
#import "AppDelegate.h"
#import "Person.h"
1.0. Introduction | 7
@implementation AppDelegate
- (BOOL) application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
Person *person = [[Person alloc] init];
person.firstName = @"Steve";
person.lastName = @"Jobs";
self.window = [[UIWindow alloc]
initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible];
return YES;
}
我们正在分配和初始化在这个例子中我们的Person类的实例。你可能不知道这意味着什么呢,但是继续执行“添加功能与类的方法方法”第8节,你会找到答案。