OC语言主要用于Mac OS 、iOS、watchTv 等应用软件的开发,成熟应用于市场多年。在这里趁着工作之余整理一下,与广大开发朋友共勉,多有不正之处,请不吝啬高见指导一二。
在这里首先给讲一下OC的语法调用。
首先初始化一个类,大家最常的:
1、[] 中括号法
Student *stu = [Student new];
[stu setAge:99];
int age = [stu age];
2、"." 点语法
stu.age = 99;
int age = stu.age;
其实细心的朋友已经观察到,这就是类属性的setter 和 getter 方法,其实点语法的本质还是方法调用,使用点方法的时候,会自动展开我 []形式的方法调用。
局部变量、成员变量、全局变量都有自己的作用域:
/**
局部变量:
栈区
函数或代码块中
函数{}内
先定义后初始化、同时定义初始化都可以
系统自动释放
成员变量(属性、实例变量) :
堆区
类的声明中定义@interface @end 和{}之间
不可定义的时候就初始化
通过类对象访问,离开类不能单独存在
程序员手动释放
全局变量:
静态区
函数的外部
从定义文件末尾
可以先定义后初始化,也可以定义的同时初始化
程序启动分配空间,程序结束释放
**/
属性作用域的修饰
@private://只能在当前类的对象方法中直接访问
@protected://可以在当前类以及子类的对象方法中直接访问
@public://任何地方都可以直接访问
@package:同一个“体系内”(框架)可以访问,介于@private和@public之间
属性声明
在@interface @end 中声明属性
@property int age ;
//等同于添加一个实例变量一个 getter 和一个 setter 方法(个人觉得这是OC中比较人性化的一点)
_age;
- (int) age;
- (void) setAge: (int) age;
//这里提一下 老版的@synthesize 同样也是用来生成 geter、setter 方法 在 xcode4.X 后基本不用了,被 @property 替代
//用法如下:
在 @implementation 中
@synthesize age = _age;
对象创建的原理
Student *stu = [Sudent new];
/*New -> 分两步
1、alloc 分配内存
2、init 初始化
所以
Student *stu = [Student alloc] init];
等同于
Student *stu = [Stuent alloc];
stu = [stu init];
*/
开发中的需求。传入参数构造对象,就和Java 语言中的构造方法一样
//OC 重写 init 方法
// 注意点, 方法以init开头 传参数 赋值
- (id)initWithAge:(int)age {
if (self = [super init]) {
_age = age;
}
return self;
}