通过下面的图解我们可以创建接口。
图(1-1)
图(1-2)
图(1-3)
通过上面的图解我们可以学会创建接口文件。
下面是创建的接口文件Humen.h
#import <Cocoa/Cocoa.h>
@protocol Humen
-(void) showName:(NSString *)name;@end
这段代码是Humen接口的声明,接口以@protocol开头,以@end结尾。
此接口中声明了一个无返回值的有一个字符串类型(NSString)参数的方法showName;
下面一段代码是头文件中的代码:
#import <Cocoa/Cocoa.h>
#import "Humen.h"@interface Student : NSObject <Humen>
{
NSString * studentName;
}
@property (nonatomic,retain) NSString * studentName;@end
上面代码是声明了一个Student类并继承了NSObject 实现了接口Humen
:NSObject 表示继承类 NSObject
<Humen> 表示实现接口Humen
{NSString * studentName} 表示类Student 声明了一个字符串类型的属性 : studentName
@property 是对属性的约束或是限定。
nonatomic 是@property中的属性用来设置类属性的,它的意思是:非原子性,不加同步,这样允许多线程并发访问,在iphone等小型设备上提高的性能是很可观的。
retail 也是@property中的属性,它的意思是:先释放之前的值,再将新值赋给属性,并且索引加1。
还要注意的是:此头文件中要包含 Humen.h 接口文件。
#import "File1.h"
@implementation Student
@synthesize studentName;
-(id)init{
self=[super init];
if (self) {
studentName=@"StudentName is hongxing11111";
}
return self;
}
-(void) showName:(NSString *) name{
NSLog(@"humen name is %@ student first name is %@",name,studentName);
}@end
上面代码中的@synthesize studentName;表示自动设置类属性studentName的getter 和setter方法。
还重写了init方法,并为属性赋值。
要注意的是实现接口中定义的方法-(void) showName:(NSString *) name{}
#import <Foundation/Foundation.h>
#import "File1.h"int main (int argc, const char * argv[]) {
Student * student=[[Student alloc]init];/*创建Student类 在执行init方法时 会给类属性赋值*/
[student showName:(NSString *) @"hongxing222"];/*调用 实例中的showName方法*/
student.studentName=@"hongxing"; //为类属性赋值
NSLog(@"sudent name is%@",student.studentName); //}
上面代码运行后结果如下图: