【实验环境】
虚拟机下玩IOS着实让人想掀桌(╯‵□′)╯︵┻━┻啊衰,VMWare版本,Mac OS版本,Xcode版本,IOS系统版本相爱相杀太惨烈,简直不忍直视系列。亲测VMWare12,MACOS10.10.5,Xcode7.2可以互相兼容,最高支持的IOS运行版本为9.2,附上下载地址,安装教程可自行百度。
VMWare WorkStations 12 :链接:http://pan.baidu.com/s/1dETuoMH 密码:mcxb
MACOS 10.10:链接:http://pan.baidu.com/s/1nvJQJI5 密码:c3l3 ps:按照百度教程可升级到10.10.5
【解析Objective-C类】
在Xcode默认的命令行工程的基础上,创建新的文件,命名为Student,用于录入某位学生的姓名,语文成绩,数学成绩和英语成绩。
创建完成后,Xcode工程中自动添加Student.h和Student.m两个文件,与C++的头文件和类文件异曲同工,此时,Xcode的工程结构如下图所示
其中,.h文件用于声明了类的变量和方法,.m文件首先引用.h文件,并实现其声明的方法。
Student.h
#import <Foundation/Foundation.h>
@interface Student : NSObject{
NSString* _name;
int _chinese;
int _math;
int _english;
}
-(void)setName:(NSString*) name;
-(void)setChinese:(int)chinese;
-(void)setMath:(int)math;
-(void)setEnglish:(int)english;
-(NSString*)name;
-(int)chinese;
-(int)math;
-(int)english;
@end
Student.m
#import "Student.h"
@implementation Student
-(void)setName:(NSString*) name{
_name = name;
}
-(void)setChinese:(int)chinese{
_chinese = chinese;
}
-(void)setMath:(int)math{
_math = math;
}
-(void)setEnglish:(int)english{
_english = english;
}
-(NSString*)name{
return _name;
}
-(int)chinese{
return _chinese;
}
-(int)math{
return _math;
}
-(int)english{
return _english;
}
@end
main.m
#import <Foundation/Foundation.h>
#import "Student.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Student* student = [[Student alloc] init];
[student setName:@"youzi"];
[student setChinese:103];
[student setMath:115];
[student setEnglish:108];
NSLog(@"%@ -- %d %d %d",[student name],[student chinese],[student math],[student english]);
}
return 0;
}
在main函数中,首先使用[[Student alloc] init]初始化Student的一个对象student,再调用student对象的四个set方法对其变量值进行设置,最终打印出来,运行结果如下所示:
【解析Objective-C函数】
1、单参数函数
如上所示,函数
-(void)setName:(NSString*) name
中,‘-’表示该函数为对象函数,调用者为该类的某一个对象,‘+’表示为类函数,‘setName’ 为函数名,‘NSString’为OC的字符串类型,‘name’为形参名
2、多参数函数
上述例子中用四个函数对Student类的四个成员变量进行了设置,也可以合并为一个函数,表达为:
-(void)setName:(NSString*)name Chinese:(int)chinese Math:(int)math English:(int)english
调用方法为:
[student setName:@"youzi" Chinese:103 Math:115 English:108]