![6f9b0999ad20cd976a78b4efe46581d1.png](https://i-blog.csdnimg.cn/blog_migrate/c9222a86f74b2b0b22fc57d9ea7904c7.jpeg)
基于< 《Objective-C编程全解》[日]荻原刚志 著 人民邮电出版社 >的学习笔记。
第一章 面向对象编程
重点概念整理:
- 对象有属性,并且能够接收消息来进行相应的处理。消息的处理是通过对象的方法完成的。消息是对象之间通信的唯一手段。
- 具体对象的实现模版即为类。
- 高独立性的模块(高耦合、低内聚),每个模块之间的交集尽可能小,声明和实现分开。独立性划分原则为对外提供最小限度的接口信息,把模块做成一个黑盒,这个原则叫作信息隐蔽或封装。
第二章 OC程序设计
重点概念整理:
- id数据类型,此种类型变量可以存放任何数据类型的变量。定义方法如下:
id obj;
- 向obj发送msg消息的语法如下:[消息表达式语法obj为对象,msg是动作触发消息,该语句可嵌套使用]
[obj msg];//[]为消息表达式修饰符
- 消息由消息关键字组成,同函数调用相同,消息中也可带参数。变量名和消息名可同名。消息关键字末尾有":",表示这个消息带参数。消息可以为一个变量,也可以为一个消息表达式。消息名又称为消息选择器、选择器或方法。
[obj cricle:3.14];
一个具体的例子:
#include<Foundation/Foundation.h>
@interface value:NSObject{
int val;
int min,max,step;
}
-(id)initValue:(int)a max:(int)b step:(int)s;
-(int)value;
-(id)up;
-(id)down;
@end
@implementation value
-(id)initValue:(int)a max:(int)b step:(int)s{
self=[super init];//super调用基类
if(self!=nil){
val=min=a;
max=b;
step=s;
}
return self;//self返回自身,相当于C++内的this
}
-(int)valu{
return val;
}
-(id)up{
if((val=val+step)>max){
val=max;
}
return self;
}
-(id)down{
if((val=val-step)<min){
val=min;
}
return self;
}
@end
int main(void){
@autoreleasepool{
id v;
v=[[value alloc]initValue:0 max:20 step:2];//初始化
printf("%dn",[v valu]);//C混合编程
[[v up]up];//嵌套
printf("%dn",[v valu]);
}
return 1;
}
![bad1cf250b37be0dd916c27f8f1160bb.png](https://i-blog.csdnimg.cn/blog_migrate/a90ea1ff3ff245ade890449abc4ac602.jpeg)
- 编译:
单文件编译:
% clang voltest.m -framework Foundation
多文件编译:
% clang -c mian.m
% clang -c volume.m
% clang -o vol main.m volume.m -framework Foundation
- 头文件的引入
在头文件最开始加入宏定义的方法避免头文件被多次编译。如下例所示:
#ifndef __MYLIB_H__
#define __MYLIB_H__
//头文件定义
#endif /*__MYLIB_H__*/