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是关键字,代表访问权限,这里是公 ...
随机推荐
- hihoCoder 1427 : What a Simple Research(大㵘研究)
hihoCoder #1427 : What a Simple Research(大㵘研究) 时间限制:1000ms 单点时限:1000ms 内存限制:256MB Description - 题目描述 ...
- get传中文参数乱码解决方法
通常我们前端不同页面之间传参数用得最多的方法就是get方法:在url后面加上参数.例如:www.test.com?id=1&name=hello. 英文和字母很好处理,但是如果有的参数值为中文 ...
- PageObject小结
写之前想把这次的灵感记录下来: 之前看PO模式几次,始终不得法,感觉一片混乱,可就在一天早上,正在照着别人的代码写自己项目时突然脑海中想通了几个问题:1.为什么要封装页面.2.各个模块的作用以及为什么 ...
- Gevent中的同步与异步详解
同步,异步概念 1.同步就是发生调用时,一定等待结果返回,整个调用才结束: 2.异步就是发生调用后,立即返回,不等待结果返回.被调用者通过状态.通知来通知调用者,或通过回调函数处理这个调用. 查询 1 ...
- IP首部校验和的计算
ip抓包结果:0000: 00 e0 0f 7d 1e ba 00 13 8f 54 3b 70 08 00 45 00 0010: 00 2e be 55 00 00 7a 11 51 ac de ...
- jeesite部署到Tomcat后,无法访问,cannot be resolved in either web.xml or the jar files deployed with this application
HTTP Status 500 - /WEB-INF/views/modules/sys/sysLogin.jsp (line: 3, column: 0) The absolute uri: htt ...
- Sprint1(第三天11.16)
Sprint1第一阶段 1.类名:软件工程-第一阶段 2.时间:11.14-11.23 3.选题内容:web版-餐厅到店点餐系统 4.团队博客地址: http://www.cnblogs.com/qu ...
- Sql Server如何新建计划任务
打开Sql Server数据库,在管理中找到维护计划功能,右击维护计划选择维护计划向导.如图所示: 打开维护计划向导后,在第一个步骤下输入计划名称. 输入完计划名称后,点击右下角的更改按钮,这里是配置 ...
- js数组操作大全(转载)
转载原网址:http://hi.baidu.com/jspboy/item/4923fffb52a28014fe35823a shift:删除原数组第一项,并返回删除元素的值:如果数组为空则返回und ...
- C#中图片与BASE64码互相转换
//保存目录 string dir = "/upload/user/head"; //站点文件目录 string fileDir = HttpContext.Current.Ser ...