從零開始: Object-C 學習2-類

//
//  main.m
//  OCStudy_01
//
//  Created by guo denny on 14-11-4.
//  Copyright (c) 2014年 guo denny. All rights reserved.
//



// 單行註釋
/*多行註釋*/

#import <Foundation/Foundation.h>  //相似#include
#import "MyTestClass.h"

int main(int argc, const char * argv[])
{

    @autoreleasepool {  //自動釋放池,一種內存管理機制,也是一種引用計算的管理方式
        
        NSLog(@"Hello, World!");   //至關於C的printf,命令行輸出
        
        /*
         @: 字符串前面多了一個‘@’號
            解釋:NSLog函數須要的參數是:NSString,爲了兼容並和C的字符串區分開來,OC在C的字符串前面加上了@符號
                也就是C的字符串前面加上@符號,OC的編譯器會認爲是一個NSString對象
            
            備註:object-c中處理字符串的類爲NSString和NSMutableString,
                 這兩個類的主要區別是:
                 NSString建立後字符串的內容和長度不能動態的改變,而NSMutableString則能夠動態改變字符串的內容和長度。
         
         */
        
        //MyTestClass* testClass = [MyTestClass alloc];  //分配內存並置爲0,
        //testClass = [testClass init];  //初始化
        
        //上面兩個能夠合成一個, 並且最好這樣寫, 關於爲何要分紅兩個,
        /*http://www.cocoachina.com/bbs/read.php?tid-125068-page-1.html
          這裏面有討論
         */
        MyTestClass* testClass = [[MyTestClass alloc] init];
        
        [testClass setIntParam: 100];
        [testClass setParam:YES secondParam:0.01 thirdParam:'X'];
        
         NSLog(@"%d, %f", [testClass getIntParam], [testClass getFloatPram]);
        
    }
    return 0;  //和C同樣,表示main函數的終止,返回0表示程序正常結束
}
//
//  MyTestClass.h
//  OCStudy_01
//
//  Created by guo denny on 14-11-4.
//  Copyright (c) 2014年 guo denny. All rights reserved.
//

/*
  Object-C類
 
 */


#import <Foundation/Foundation.h>

/*
 類的定義
 
 格式:
 @interface 類名: 父類
 {
    //類成員變量定義;
    類型 變量名;
 }
 //類方法定義;
 -(返回類型) 方法名;
 -(返回類型) 方法名:(參數類型)參數名;
 
 //多參數寫法,看起來有點蛋疼
 -(返回類型) 方法名:(參數1數據類型) 參數1的數值的名字 參數2的名字: (參數2數據類型) 參數2值的名字 ... ;
 @end
 
 備註:這裏沒有public private, 能夠認爲全是public
 */
@interface MyTestClass : NSObject
{
    int intParam;
    float floatParam;
    double doubleParam;
    short int shortParam;
    long long int longlongParam;
    BOOL boolParam;  //BOOL 變量的值是:YES NO,至關於true false
    char charParam;
    char* p;     //OC用nil表示空指針,不是NULL,這點跟C不一樣,不過跟pascal是同樣的(好熟悉呀,很久沒寫delphi了)
}
-(void) print;
-(int) getIntParam;
-(void) setIntParam:(int) value;
-(void) setParam:(BOOL) value1 secondParam:(float) value2 thirdParam:(char) value3;
-(float) getFloatPram;

@end
//
//  MyTestClass.m
//  OCStudy_01
//
//  Created by guo denny on 14-11-4.
//  Copyright (c) 2014年 guo denny. All rights reserved.
//

#import "MyTestClass.h"

/*
 類的實現
 
 格式
 @implementation 類名
 -(返回類型) 方法名
 {
 }
 
 -(返回類型) 方法名:(參數類型)參數名
 {
 }
 
 @end
 
 */

@implementation MyTestClass

-(void) print
{
    NSLog(@"%d", intParam);
}


-(int) getIntParam
{
    return intParam;
}

-(void) setIntParam:(int)value
{
    intParam = value;
}

-(void) setParam:(BOOL)value1 secondParam:(float)value2 thirdParam:(char)value3
{
    boolParam = value1;
    floatParam = value2;
    charParam = value3;
}

-(float) getFloatPram
{
    return floatParam;
}

@end
相關文章
相關標籤/搜索