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是关键字,代表访问权限,这里是公 ...
随机推荐
- 点餐系统Sprint1总结
经过第一个阶段的冲刺,大家基本上都熟悉自己要做什么,并且把界面做了出来.通过这个阶段的冲刺,大家都学到了很多东西,团队更加默契,遇到不懂的都会提出来一起解决. 团队贡献分 148彭宏亮 20 150张 ...
- Stl源码剖析 第三章 iterator摘要
1. Stl的设计思想是: 将数据容器和算法分开,彼此独立设计,最后再以一贴胶合剂将它们撮合在一起,这个胶合剂就是迭代器. 2. 从3.2节迭代器的实现可知,如果要设计一个与容器分离实现的迭代器,会暴 ...
- 如何离线创建Ionic/cordova项目
在创建ionic项目的时候,需要联网下载许多东西,由于墙的缘故,我们在创建.添加android平台.编译过程中,失败的可能性非常高,为解决这个问题,我创建了一个空的Ionic1 tab项目,并完成了上 ...
- Ios8代码关闭输入预测问题
自IOS8出来了输入预测问题后,有些问题也就来了比如textfield中输入邮箱的话,就会有很多空格无法去掉,当时我一直在找有没有提供什么方法可以关闭:后面有这样的一个属性可以解决输入邮箱没有空格问题 ...
- c# 邮件发送功能
//统一由一个邮箱发送录用通知 string strfrom = "";//发件人邮箱地址 string strpow = "";//邮箱密码 string s ...
- web前端网站收藏
参考 w3school:html,css,js等各种参考 W3schools:较之w3school界面更华丽 webplatform:学习最新的web技术 MDN:mozilla developer ...
- epoll里面mmap释疑
今天看到有文章说epoll里面用了mmap,还说进程不需要从内核读数据,只需要从用户态buffer读数据就可以.觉得很神奇,就查了一下,发现完全不是描述的那样.实际上,只是把要传递的fd通过mmap来 ...
- web 打开子窗口提交数据或其他操作后 关闭子窗口且刷新父窗口实现
父页面 : html连接:<a href="javascript:void(0)" onclick="window.open(子页面URL)">js ...
- linux笔记:linux服务管理
linux服务的分类: 启动和自启动: 查询已经安装的服务: RPM包的默认安装路径: 独立服务的启动: 独立服务的自启动: 基于xinetd的服务的管理: xinetd服务的自启动: 源码包安装服务 ...
- 加速编码的 JavaScript 库和工具
JavaScript库是 一个提前写好的JavaScript文件库,它可以很容易的开发基于JavaScript的应用,特别是AJAX和一些其它的以web为中心的技术.运用JavaScript最基本的方 ...