—>对象的操作、对象作为函数
当学了OC的对象操作及对象作为函数,可能会对对象、指针、方法、函数感觉很混乱。下面的程序是一段帮助理解对象、指针/方法、函数的程序:
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
@public
int age;
double height;
}
- (void)print;
@end
void test1(int newAge, double newHeight);
void test2(Person *newP);
void test3(Person *newP);
void test4(Person *newP);
int main()
{
Person *p = [Person new];
p->age = 10;
p->height = 1.5f;
test1(p->age, p->height);
[p print];
test2(p);
[p print];
test3(p);
[p print];
test4(p);
[p print];
return 0;
}
@implementation Person
- (void)print
{
NSLog(@"年龄=%d,身高=%f", age, height);
}
@end
void test1(int newAge, double newHeight)
{
newAge = 10;
newHeight = 1.6;
}
void test2(Person *newP)
{
newP->age = 20;
newP->height = 1.7;
}
void test3(Person *newP)
{
Person *p2 = [Person new];
p2->age = 40;
p2->height = 1.8;
newP = p2;
newP->age = 30;
}
void test4(Person *newP)
{
Person *p2 = newP;
p2->age = 50;
p2->height = 1.9;
newP->age = 60;
}
下面简单说一下区别:
1、对象的创建:类名 *对象名 = [类名 new];
OC中对象通过以指针形式创建出来
记住:每创建一个对象都可以理解为它们只是属性等一样,本质(地址等)不一样的,就像每个人都是独立的个体,都有头发等特征,至于头发是粗是细就有所不同了
2、方法与函数:
方法:
只要是对象的方法,都以“-”开头,还有()来包括数据类型
函数:
函数中以()来包括形参
下面分析一下这个程序,对于这种看上去挺长的程序,个人习惯是直接看main()函数(其他先不理会):
Person *p = [Person new];
p->age = 10;
p->height = 1.5f;
test1(p->age, p->height);
[p print];
test2(p);
[p print];
test3(p);
[p print];
test4(p);
[p print];
直接分析这一部分即可,下面是个人分析图:
【上图中数据类型为double的变量为省地方,在图中都没有以六位小数位形式表示】