从零开始: 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


你可能感兴趣的:(从零开始: Object-C 学习2-类)