oc基础-OC基础-类的使用

           

 #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内存就会指向类的内存中,找到行为

     

 

原文地址:https://www.cnblogs.com/hui1107464497/p/4491230.html