#import <Foundation/Foundation.h>
//定义枚举类型
typedef enum
{
sexMan,
sexWomen
} Sex;
//定义日期类型
typedef Struct
{
int year;
int month;
int day;
} Date;
//1.声明类 (此时不能初始化类的成员变量) 2 3 @interface Student:NSObject 5 { 6 @public; 9 int _age; 11 char *_name;
Sex _enumSex;
Date _birthday;
13 //声明方法 15 - (void) study; 17 } 18 19 @end 20 21 //2.类的实现 22 23 @implementation Student 25 //方法的实现 27 - (void) study 29 { 31 NSLog(@"开始学习"); 33 } 35 @end
int main()
{
Student *stu=[Student new];
stu->name="aaa";
stu->age=20;
Date d={1995,1,12};
stu->birthday=d;
stu->enumSex=sexWomen;
//调用方法
[stu study];
}
1.声明类的同时不能对类里面的成员变量初始化
2.要是外部的实例指针访问类的成员变量,就必须在成员变量前加上@public,默认是受保护的
3.OC中操作对象,都是用指针间接操作的
4.OC中方法的声明语法 :方法类型 (数据类型)方法名; (oc中的方法类型都是减号-,oc中的()仅用来括住数据类型)
5.操作类对象的行为语法:[执行者 行为]
6.typedef 关键字用于定义类型, typeof int myInt; 那么在该文件中使用myInt 就是在使用int类型
7.结构体仅在定义实例的时候可以直接赋值。(错误写法:Date d; d={1995,1,12})
8.成员变量一般都用 下划线开头
9.该代码的内存分析:
1.当创建类的实例赋值给外部指针时,在内存中就分配一块空间给该指针对象,该内存的地址就是实例的地址,同时分配一块内存给创建的实例,该内存中存放了成员变量;
若是第一次创建实例,那么还会给类分配一块内存,该内存中存放类的方法列表
2.给类成员变量赋值时:由指针找到变量,并赋值
3.调用方法时:在每个实例内存中默认存在一个isa内存,当指针向实例发送一条行为消息是,该isa内存就会指向类的内存中,找到行为