OC基础--结构体 枚举做类成员属性
结构体 枚举作类的成员属性:
定义一个学生类
性别 -- 枚举
生日 入学日期 毕业日期 -- 结构体
代码示例:
声明文件 Student.h:
#import <Foundation/Foundation.h>
typedef struct {
int year;
int month;
int day;
} Date;
typedef enum {
kGenderGirl = ,
kGenderBoy = ,
kGenderChunGe =
} Gender; @interface Student : NSObject
{
@public
int _age;
NSString* _name;
Gender _gender;
// 生日
Date _birthday;
// 入学时间
Date _entranceTime;
// 毕业时间
Date _graduation;
}
// 自我介绍
- (void) selfIntroduce;
// 枚举值转换为性别
+ (NSString*) getGenderByEnumValue:(Gender) gender;
@end
实现文件 Student.m:
#import "Student.h" @implementation Student
// 输出信息
- (void)selfIntroduce{
// 实例方法中调用类方法
NSString* gender = [[self class] getGenderByEnumValue:_gender];
// 实例方法访问成员变量 NSLog(@"大家好,我是:%@, 性别:%@, 年龄:%i, 我是 %i年%i月%i号 破壳的 上天安排我在 %i年%i月%i号 进入本校来虐死你们 哈哈 %i年%i月%i号 虐死你们后 哥就走了", _name, gender, _age, _birthday.year, _birthday.month, _birthday.day, _entranceTime.year, _entranceTime.month, _entranceTime.day, _graduation.year, _graduation.month, _graduation.day);
}
// 性别枚举值转换为字符串
+ (NSString *)getGenderByEnumValue:(Gender)gender{
NSString* sex;
switch (gender) {
case :
sex = @"女";
break;
case :
sex = @"男";
break;
case :
sex = @"春哥";
break;
default:
sex = @"我是妖";
break;
}
return sex;
}
@end
Main.m:
#import <Foundation/Foundation.h>
#import "Student.h" int main(int argc, const char * argv[]) {
Student * stu = [Student new];
stu->_name = @"小马";
stu->_age = ;
stu->_gender = kGenderChunGe;
// 结构体成员赋值 方式一
stu->_birthday = (Date){, , };
// 方式二
stu->_entranceTime.year = ;
stu->_entranceTime.month = ;
stu->_entranceTime.day = ; // 方式三
Date date = {.year = , .month = , .day = };
stu->_graduation = date;
[stu selfIntroduce]; return ;
}
/*
2015-08-27 23:58:16.727 结构体 枚举做类成员[938:44544] 大家好,我是:小马, 性别:春哥, 年龄:30, 我是 1985年11月11号 破壳的 上天安排我在 2000年9月23号 进入本校来虐死你们 哈哈 2004年9月21号 虐死你们后 哥就走了
*/
OC基础--结构体 枚举做类成员属性的更多相关文章
- C#基础 结构体 枚举类型
结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的例子: struct student { public int nianling; public int fen ...
- C 碎片八 结构体&枚举&联合
一.结构体 1, 结构体定义 结构体类型的定义:任意数据类型变量的集合.用于描述一个具体的事物的信息,在C语言中描述一件事物一般都是用结构体 声明结构体类型的格式: struct 结构体名 {成员列 ...
- C结构体、C++结构体、C++类的区别
先来说说C和C++中结构体的不同 a) C语言中的结构体不能为空,否则会报错 1>d:\myproject\visual studio 2013\projects\myc++\main.c(71 ...
- OC中结构体作为对象属性
在OC中结构体有时候也作为对象的属性 类的定义 #import <Foundation/Foundation.h> typedef struct{ int year; int month; ...
- 关于结构体和C++类的内存地址问题
关于结构体和C++类的内存地址问题 今天终于有时间写点东西了~ 太爽了 *_* 很多人都知道C++类是由结构体发展得来的,所以他们的成员变量(C语言的结构体只有成员变量)的内存分配机制是一样 ...
- C基础--结构体
C语言,结构体语法: 1.定义结构体类型: struct 结构体名称 { 成员类型 成员名称1; 成员类型 成员名称2; ... }; 例:struct Date { int year ; int m ...
- 让结构体类型frame的某个属性可以直接修改
本篇是是本人在博客园写的第一篇博客,前几天因为种种原因最终决定离开混了几年的csdn.希望在博客园有个新的开始 Foundation框架里面的frame是大家最熟悉不过的一个属性了,但是修改起来比较麻 ...
- C#语言基础——结构体和枚举类型
结构体和枚举类型 一.结构体(struct) 结构类型是用户自己定义的一种类型,它是由其他类型组合而成的,可包含构造函数.常数.字段.方法.属性.索引器.运算符.事件和嵌套类型的值类型.结构在几个重要 ...
- C# 类&结构体&枚举
类: class Lei //要和static void Main(string[] args)平级: { public int lei_int; //public是关键字,代表访问权限,这里是公 ...
随机推荐
- crontab Job权限重要
在撰写JOb时,需要将SH目录及文件设为777,方可正常执行~
- C++ STL之vector用法总结
介绍 vector是表示可变大小数组的序列容器. 就像数组一样,vector也采用的连续存储空间来存储元素.也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效.但是又不像数组,它的大 ...
- 关于mysql中实现replace的sql语句
update 表名 set 字段名=replace(字段名, '旧字符串', '新字符串')
- js 对多sheet Excel赋值操作
function ExpExcel(){ var tempStr = ""; var filePath ="" var excelname=ReportFile ...
- Tomcat安装配置
Tomcat安装配置 很久没有通过博客对学习所得进行记录了. 现在将使用Tomcat的一些经验和心得写到这里,作为记录和备忘.如果有朋友看到,也请不吝赐教. 1.首先是Tomcat的获取和安装. 获取 ...
- JSP学习
http://blog.csdn.net/javaeeteacher/article/details/1932447
- 转载分享----一线交付眼中的为何"项目总是迟迟无法交付”
当初博主在一线交付BOSS系统中承担过TC角色 交付的路途很艰辛,加班到10点多或1点多第二天8点上班,还有通宵的日子 还有无数个问题从开始到关闭的周期,各种催人,各种掐架拉会,各种被甲方嫌弃 看到这 ...
- python成长之路【第十五篇】:JavaScript初步认识
JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. 一.如何编写 1.J ...
- java中观察者模式Observable和Observer
25.java中观察者模式Observable和Observer 如果想要实现观察者模式,则必须依靠java.util包中提供的Observable类和Observer接口 观察者设计模式 现在很多的 ...
- PHP function