通過下面的圖解我們可以創建接口。
圖(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); //}
上面代碼運行後結果如下圖: