Object-C学習ノートの基礎知識一

2776 ワード

Object-CはCの派生言語であり、すべてのC言語の特性を継承しているが、Object-CはC言語の特性そのものから継承されているわけではない.
まず、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でクラスを宣言する方法を示しています.その中には、いくつかの継承も含まれています.
Object-Cはクラスを@interfaceで開始し、@endで終了することを宣言します.
Printは宣言されたクラスであり、NSObjectクラスから継承される.
//      
-(NSString *)printName;
//      
-(NSString *)printName: (NSString *)name;
//      

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

Javaに相当:
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だらけだと考えることができます.クラスメソッドとインスタンスメソッドのみで、このクラスのインスタンスを作成することなく、クラスメソッドを直接呼び出すことができます.マイナス記号はインスタンスメソッドを表し、このクラスのインスタンスオブジェクトを作成する必要がある場合に呼び出すことができます.
(void)と(BOOL)はそれぞれ戻り値のタイプである.では、BOOLはJava言語のBoolean値と同じではないでしょうか.いいえ、BOOLは8ビットストレージを使用しています.YESは1、NOは0、1より大きいのはYESではなく、標準Cとは違います.1バイト以上の整数値を誤ってBOOLに割り当てると、8ビット下のObejective-Cの1が1に等しくないだけで、BOOL値とYESを絶対に比較しない
引用転載自:www.cnblogs.com/moonvan /archive/2011/10/13/2210498.html
#import <Foundation/Foundation.h> 

//  @implementation   @end        
@implementation Print

@synthesize caption;
@synthesize photographer;

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

@end

その後、どのように呼び出すかという問題が発生しました.
#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;
}