文档章节

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

lyh2017iOS
 lyh2017iOS
发布于 2017/07/11 00:09
字数 373
阅读 0
收藏 0
点赞 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
博文 354
码字总数 137380
作品 0
朝阳
【iOS】Swift类与结构、存储属性、计算属性、函数与方法、附属脚本等

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

xn4545945 ⋅ 2014/09/16 ⋅ 0

OC数据类型 enum NSRange NSPoint NSSize NSRect NSDate N

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

尘埃眠于光年yr ⋅ 2015/10/15 ⋅ 0

C/OC/Swift的数据类型没那么简单

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

CoderDancer ⋅ 2017/08/10 ⋅ 0

(一)Block的实质初探

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

madaoCN ⋅ 2017/10/21 ⋅ 0

Swift4.0基础知识回顾

简单介绍一下Swift Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序,Swift语言让应用开发更简单、更快、更稳定,确保最终应用有着更好的质量更多了解Swift可以去《The...

博行天下 ⋅ 2017/12/06 ⋅ 0

iOS运行时Runtime浅析

运行时是iOS中一个很重要的概念,iOS运行过程中都会被转化为runtime的C代码执行。例如[target doSomething];会被转化成objc)msgSend(target,@selector(doSomething))来执行。这篇博客会较为全...

CHENYUFENG1991 ⋅ 2016/07/17 ⋅ 0

Swift 4.0 基础学习总结(二)

在 Swift 4.0 基础学习总结(一)中,我们学习的Swift中的基本数据类型以及控制流,Swift简介的语法以及提供的更加适用亲民的方法让我们已经初步感受到这门语言的魅力。今天来继续学习Swift...

xx_cc ⋅ 2017/12/03 ⋅ 0

Runtime那些事

Runtime那些事 前言 从字面意思看,就是运行时。但是这个运行时究竟什么意思?可以把它理解成:不是在编译期也不是在链接期,而是在运行时。那究竟在运行期间做了什么呢?按照苹果官方的说法...

kakarotto ⋅ 01/08 ⋅ 0

Swift - 类、属性、方法

一、类 Swift类是构建代码所用的一种通用且灵活的构造体。 我们可以为类定义属性(常量、变量)和方法。 与其他编程语言所不同的是,Swift并不要求你为自定义类去创建独立的接口和实现文件。...

Albert_Lee ⋅ 2017/12/04 ⋅ 0

Objective-C 源码(零):前戏

趁着最近比较闲,可以再次研究一下Objective-C的源代码,顺便梳理一下思路,愿有更大收获。 Objective-C是一门面向对象的程序设计语言。它的对象模型是基于类来创立的。源码可以在苹果开源...

神补刀 ⋅ 2015/11/10 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Android JNI 读写Bitmap的方法

Java层创建Bitmap,通过JNI将Bitmap传到C/C++进行处理 Java部分 public static native boolean greenBitmap(Bitmap bitmap); C/C++部分 JNIEXPORT jboolean JNICALL Java_com_test_Test_gree......

国仔饼 ⋅ 18分钟前 ⋅ 0

一次性让你懂async/await,解决回调地狱

什么是async? 欢迎留言讨论 async 函数是 Generator 函数的语法糖。使用 关键字 async 来表示,在函数内部使用 await 来表示异步。相较于 Generator,async 函数的改进在于下面四点: 内置执...

阿K1225 ⋅ 18分钟前 ⋅ 0

angular常用命令

.下载更新操作 1.利用npm下载angular的命令行工具AngularCLI: npm install -g @angular/cli 2.下载jquery: npm install --save jquery 3.更新npm: npm i -g npm 4.更新angular: ng update ......

消散了的诗意 ⋅ 20分钟前 ⋅ 0

window.print 页面打印

定义和用法 print() 方法用于打印当前窗口的内容。 语法 window.print(); window.print() 实际上,是浏览器打印功能菜单的一种程序调用。与点击打印功能菜单一样,不能精确分页,不能设置纸型...

初学者的优化 ⋅ 21分钟前 ⋅ 0

魔兽世界 7.0版本上 PVE装备全攻略

  T套 因为大家应该都会打穿副本的所以具体是哪个boss我就不说了。   T1: 所有套装都在【熔火之心】出   T2: 头原来是在【奥妮克希亚的巢穴】改到黑翼之巢的奈法利安了,腿是在【熔火之...

wangchen1999 ⋅ 21分钟前 ⋅ 0

java.math.BigDecimal使用小结

原文地址 java.math.BigDecimal使用小结 divide方法 使用BigDecimal.divide方法时一定要考虑: 除数是否为0 商是否是无限小数 正确的使用方式 判断除数是否为0,是0做另外的处理逻辑 调用除法...

666B ⋅ 24分钟前 ⋅ 0

关于qstring转char乱码问题。

if (OpenClipboard(NULL)) { HGLOBAL hgClip; EmptyClipboard(); QByteArray byay = FValue.toLocal8Bit(); //转latin编码 char *bochsrc_line = byay.data(); hgClip = GlobalAlloc(GMEM_DD......

backtrackx ⋅ 24分钟前 ⋅ 0

了解SSH加密和连接过程

介绍 SSH或安全shell是安全协议,也是安全管理远程服务器的最常用方式。通过使用多种加密技术,SSH提供了一种机制,用于在双方之间建立加密安全连接,对彼此进行身份验证,以及来回传递命令和...

吴伟祥 ⋅ 31分钟前 ⋅ 0

微信小程序

小程序的全局配置app.json 微信小程序的全局配置保存在app.json文件中。开发者通过使用app.json来配置页面文件(pages)的路径、窗口(window)表现、设定网络超时时间值(networkTimeout)以...

上官清偌 ⋅ 34分钟前 ⋅ 0

【转】百度坐标坐标系之间的转换(JS版代码)

/** * Created by Wandergis on 2015/7/8. * 提供了百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换 *///定义一些常量var x_PI = 3.1415926535897932...

HAVENT ⋅ 36分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部