文档章节

第02天OC语言(04):结构体作为对象属性

lyh2017iOS
 lyh2017iOS
发布于 2017/07/11 00:09
字数 373
阅读 0
收藏 0

#####一、概念 #####二、代码

#import <Foundation/Foundation.h>
#pragma mark 类
/*
    合理设计一个'学生'类
    学生有 姓名 生日 两个属性 和 说出自己姓名 生日方法
    要求利用设计的学生类 创建学生对象, 并说出自己的姓名 和年龄
    
    描述学生类
    事物名称 : 学生(Student)
    属性 : 姓名(name) 生日(birthday)
    行为 : 说出自己的姓名 和 生日(say)
 */
typedef struct
{
    int year;
    int month;
    int day;
}Date;

@interface Student : NSObject
{
    @public
    NSString *_name;
    Date _birthday;
}

- (void)say;
@end
@implementation Student

- (void)say
{
    NSLog(@"我的姓名 = %@,year = %i, month = %i, day = %i",_name,_birthday.year,_birthday.month,_birthday.day);
}
@end

#pragma mark main函数
int main(int argc, const char * argv[])
{
    // 1.创建学生对象
    Student *stu = [Student new];
    // 2.设置学生对象的属性
    stu->_name = @"lyh";
    // 1.结构体只能在定义的时候初始化
    // 2.系统并不清楚 它是数组 还是结构体
//    stu->_birthday = {1992,4,11};
#pragma 1.结构体一次性赋值(推荐使用,快捷方便,只需要转换一下就行了)
//    stu->_birthday = (Date){1992,4,11};
#pragma 2.结构体逐个赋值
//    stu->_birthday.year = 1992;
//    stu->_birthday.month = 2;
//    stu->_birthday.day = 1;
#pragma 3.其他方式
    Date d = {19992,9,1}; // 0开头是八进制,不要随便写09 ,直接写9
    stu->_birthday = d;

    // 3.学生说出自己的姓名 和 生日
    [stu say];
    
    
    Date d1 = {1992,2,2};
    Date d2;
    d2 = d1; // 本质是将 d1所有的属性的值 都拷贝了 一份给d2;
    
    d2.year = 2000;
    printf("d1 year = %i\n",d1.year);
    printf("d2 year = %i\n",d2.year);

    return 0;
}

![Uploading image_816804.png . . .]

© 著作权归作者所有

共有 人打赏支持
lyh2017iOS
粉丝 1
博文 357
码字总数 137380
作品 0
朝阳
【iOS】Swift类与结构、存储属性、计算属性、函数与方法、附属脚本等

写了12个Person来复习,不过完成同样的代码需要敲键盘的次数相比OC确实少了很多,这很多应该归功于Swift中不写分号,以及少了OC中的中括号。 一、类与结构体 两者在Swift中差不了多少了 类与...

xn4545945
2014/09/16
0
0
从 OC 到 Swift 的快速入门与专业实践

只会介绍与 OC 有明显区别的地方,不会介绍 OC 中没有的,比如元组。当前总结也只是蜻蜓点水而已,但是有 OC 的基础,看这些已经足够。 一、数据 Swift 是类型安全的语言: Swift 必须明确数...

CoderHG
08/04
0
0
OC数据类型 enum NSRange NSPoint NSSize NSRect NSDate N

//------------------------------------------------ //可变的字典 NSMutableDictionary //第一种定义方式 返回一个空的字典 NSMutableDictionary mutableDict1 = [NSMutableDictionary di......

尘埃眠于光年yr
2015/10/15
146
0
C/OC/Swift的数据类型没那么简单

数据类型决定了值如何存储到计算机内存中。在声明变量时也可指定它的数据类型。不同数据类型来存储不同的信息,所有变量都具有数据类型,以决定能够存储哪种数据。 C语言 C语言的基本数据类型...

CoderDancer
2017/08/10
0
0
(一)Block的实质初探

相关文章 (一)Block的实质初探 (二)Block之存储域 NSConcreteStackBlock,NSConcreteGlobalBlock,NSConcreteMallocBlock (三)Block之截获变量和对象 (四)Block之 _block修饰符及其存...

madaoCN
2017/10/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

根据进程名称杀死进程

ps -ef | grep keyword | grep -v grep | awk '{print $2}' | xargs kill -9 逐个分析: 1, ps -ef | grep keyword: 查出进程名含有 keyword 的所有进程; 2, grep -v grep: 从这些结果里面,把......

vinci321
45分钟前
1
0
nginx的简单使用:负载均衡

nginx:反向代理的服务器;用户发送请求到nginx,nginx把请求发送给真正的服务器,等待服务器处理完数据并返回,再把数据发送给用户。 nginx作为一个反向代理服务器,能缓存我们项目的静态文...

osliang
今天
2
0
网站title标题被改并被百度网址安全中心提醒的解决办法

国庆假日期间我们Sine安全接到众多网站站长求助网站标题被改导致在百度搜索中百度安全中心提醒被拦截,导致网站正常用户无法浏览网站被跳转到一些菠菜du博网站,而且很明显的一个特征就是在百...

网站安全
今天
1
0
JDK版本与major.minor version的对照关系

其实,只需要记住jdk6对于major.minor version 50即可,其他版本自行计算即可。 ---------------------

码代码的小司机
今天
1
0
C++基础教程面向对象学习笔记及心得感悟[图]

C++基础教程面向对象学习笔记及心得感悟[图] 使用友元函数重载算术运算符: C ++中一些最常用的运算符是算术运算符 - 即加号运算符(+),减运算符( - ),乘法运算符(*)和除法运算符(/...

原创小博客
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部