Object-C學習筆記之基礎知識一

Object-C 是C的衍生語言,繼承了全部C語言的特性,可是Object-C並非繼承自C語言特性自己。html

首先咱們先經過例子來講明Object-C中的一些基本語法:

#import <Foundation/Foundation.h>

@interface Print: NSObject{    //Objective-c的全部類都繼承於NSObject 
    // 成員屬性
    NSString * caption;
    NSString * photographer;
}

//在Objective-C 2.0引入了屬性合成,至關於以前的get/set方法 
@property(nonatomic, copy) NSString * caption;
@property(nonatomic, copy) NSString * photographer; 

//類方法

+(NSString *)printSize: (NSString *)size;
//實例方法
-(NSString *)printName;
-(NSString *)printName: (NSString *)name;

-(BOOL)print: (NSString *)size setLength: (int)length;

@end

上面代碼展現瞭如何在Object-C聲明一個類,其中也涉及到了少量繼承:java

Object-C聲明一個類以@interface 開始,以@end 結束;web

Print 爲所聲明的類,繼承自NSObject 類;學習

//無參實例方法
-(NSString *)printName;
//有參實例方法
-(NSString *)printName: (NSString *)name;
//多參實例方法

-(BOOL)print: (NSString *)size setLength: (int)length;

至關於Java中的:atom

public static String printSize(String name){
}
public String printName(){
}

public String printName(String name){
}
public Boolean print(String name, int length){
}

首先要把之前學習面嚮對象語言的慣性思惟拋去,在Objective-C裏面沒有public和private的概念,你能夠認爲全是public;它只有類方法和實例方法,加號表示類方法,類方法能夠直接調用,而不用建立這個類的實例;減號表示實例方法,須要建立這個類的實例對象才能夠調用。spa

(void)和(BOOL)分別爲返回值的類型; 
那麼BOOL是否是跟Java語言中的Boolean值同樣呢,不是的: 
BOOL使用8位存儲,YES定義爲1,NO定義爲0,大於1不爲YES,跟標準C不一樣。 
若不當心將一個長於1字節的整型值賦給BOOL,則只截取低八位 
Obejective-C中1不等於1,絕對不要將BOOL值和YES比較.net

引用轉載自:www.cnblogs.com/moonvan 
/archive/2011/10/13/2210498.htmlcode

#import <Foundation/Foundation.h> 

//使用@implementation開始和@end結束實現類的內容
@implementation Print

@synthesize caption;
@synthesize photographer;

+(NSString *)printSize: (NSString *)size{
    ......
}
-(NSString *)printName: (NSString *)name{
    ......
}

@end

以後,就是如何調用的問題了:orm

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]){
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
    
    //實例化類的對象 
    Print * pt = [[Print alloc]init];
    
    //方法的使用

    NSString * a = [self printSize: @"20"];
    NSString * b = [pt printName];
    NSString * c = [pt printName: @"Yi_Yuan_n"];
    BOOL d = [pt printName: @"Yi_Yuan_n" setlength: 175];
    
  //屬性的使用
    //設置器的調用
    [pt setCaption: @"haha"];
    [pt setPhotographer: @"hehe"];
    //獲取器的調用
    NSString * haha = [pt getCaption];
    NSString * hehe = [pt getPhotographer];
    //輸出
    NSLog(@"%@", haha);
    NSLog(@"%@", hehe);
    
    [pt release];
    
    [pool drain];
    return 0;
}
相關文章
相關標籤/搜索