感觉类和对象还有文件结构的概念和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);
}