完成了OC的类的声明, 开始类的实例化.
方法也是有返回值的, 方法的名字要有冒号 :
- (void) setNum : (NSString *) n;
method return method method take argument argument
type type name argument type name
<span style="font-size:14px;">- (void)setSex:(NSString *)gender;</span>
函数是没有类型的, 方法是有类型的, 类方法, 实例方法. 如果没有定义放法的类型, 系统会默认设置为 id 类型. id 类型可以代表任意的类型.
<span style="font-size:14px;"> // 创建一个学生类
Student *stu = [[Student alloc] init];
[stu setName:@"博尔特"];
[stu sayHi];
[stu setSex:@"男"];
NSLog(@"%@!!!!", [stu sex]);
</span>
具体步骤. 首先要引入头文件, 因为oc的对象都是在堆区的, 所以要有指针 * 我们用alloc 来为stu 这个对象分配一段内存.
alloc 本身就是NSObject 的方法 分配完空间之后, 就进行初始化. init 也是NSObject 的方法.
<span style="font-size:14px;">+ (instancetype)alloc;
- (instancetype)init;</span>
所以在OC和对象有关的都离不开方法. 面向对象的编程语言. 我有的方法你对象才可以用, 和我无关的方法, 你对象用也用不了.
还是比较爱憎分明的嘛. OC的内存和c的区也是一致的, stu 就是堆区的, 只可以通过指针进行间接访问.
OC的空对象 nil 与NULL不同, 你和一个空对象发送任何message 是没有任何意义的. 没有初始化的对象是一个野指针.
你向一个空对象发送任何消息是不起作用的.
消息的传递 消息的接收者一定是个指针. [receiver message] 消息和实例方法是同名的.
<span style="font-size:14px;"> [person setName:@"乔布斯"]; // 向person 对象发送setName: 消息设置名字为乔布斯</span>
也可以发送一个不存在的方法, 消息是否执行 取决于对象.系统会显示不认识.
2015.2.12