IOS接口 和 實例變量的使用

通過下面的圖解我們可以創建接口。

~GNKTNZ[]1C@5W4L5Z@CZ[P

 

圖(1-1)

Q3)OKN1N{6CRR8@_VU[L5VK[4]

圖(1-2)

D3B0TC)F%~~D3}]N_MB{TR7

圖(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);     //

}

上面代碼運行後結果如下圖:

0Q~74SGF)DN`E7[L4)R]IY5

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章