OC_类和对象

感觉类和对象还有文件结构的概念和C++基本一致。

首先区分几个概念

1.类的方法和实例的方法:
(1)从定义方式:

//.h文件中
-(void) fun1;
+(void) fun2;

//.m文件中:
- (void) fun1{
    NSLog(@"实例方法用-号");
}
+(void) fun2{
    NSLog(@"类方法用+号");

(2)从调用的方式:

//实例化其他类,并调用其他类的方法
    ViewController2 *v2 = [[ViewController2 alloc] init];
    //实例方法,通过实例对象调用
    [v2 fun1];
    
    //类方法,通过类本身调用
    [ViewController2 fun2];//不能访问成员变量

类方法有什么意义呢?不依赖对象不需要实例化,执行效率高,当方法不需要调用成员变量时,可以采用类方法。

2.成员变量protect和private类型
(1)从定义的方式:

//在.m文件中创建,
@interface ViewController (){
    NSString *str1;
}

//在.h文件中创建
//定义一个字符串属性,参数根据不同类型而改变
@property(nonatomic, copy) NSString * shuxing;

在.h文件中,成员变量定义相当于protect权限,.h中的成员变量调用时,用->来调用
在.m文件中,定义相当于private权限,只能用自己的函数访问
(2)从调用的方式:

//自己类中的.m文件中创建的变量,直接调用
//.h文件中创建的变量,调用要在前面加_下划线
_shuxing=@"自己的属性";

创建类和实例并调用

在对应目录文件夹右键点击new file,选择cocca touch class,选择当前类名,继承自哪个类,什么语言。

1.要#import语句导入对应类的.h头文件。
2.在当前文件创建目标类的实例对象。
3.通过实例对象调用类中的方法,采用[]方括号调用。

#import "ViewController2.h"
//调用自己类中的方法,直接self就行
- (void)viewDidLoad {
    str1 = @"自己的变量,在类中可见,就相当于public";
    [self putout];
  }
  
 - (void) putout{
    NSLog(@"%@",  str1);
    _shuxing=@"自己的属性";
    
//类的属性和成员变量类似,但也有一点不同
    NSLog(@"%@",_shuxing);
}

调用带单个和多个参数的函数

//调用
//调用带参数的方法
    [self outstring:@"我是带参数的方法"];
    [self outstring:@"第一个参数"  outInt:666];//这个outinit不加也行

//定义一个带参数的方法
-(void) outstring:(NSString *) str {
    NSLog(@"%@",str);
}

//定义一个带多个参数的方法,这个outin不加也行,主要是起到提示作用
-(void) outstring:(NSString *) str outInt:(NSInteger) value{
    NSLog(@"%@ , %ld", str, value);
}

猜你喜欢

转载自blog.csdn.net/weixin_43554642/article/details/88558499