美文网首页八天学会OC
第02天OC语言(04):结构体作为对象属性

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

作者: liyuhong | 来源:发表于2017-07-20 14:53 被阅读10次
一、概念
二、代码
#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 . . .]

相关文章

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

    一、概念 二、代码 ![Uploading image_816804.png . . .]

  • 关于为何view.frame.size.width = *报错

    OC语法规定:OC对象的结构体属性的成员变量无法直接赋值, 但是可以给OC对象的结构体属性赋值 也就是说 可以直接...

  • 类与结构体

    在 OC 中:1.结构体只能封装属性,而类不仅可以封装属性还可以封装方法.2.结构体变量分配在栈,OC 对象分配在...

  • 从结构体和类的区别到自定义结构体

    结构体和类的区别 1、结构体只能封装属性,类却不仅可以封装属性也可以封装方法。 2、结构体变量分配在栈,而OC对象...

  • 结构体作为对象属性

  • 杂记

    OC语法问题 OC语法细节:不允许直接修改OC对象的结构体属性的成员 比如:self.scrollView.con...

  • OC中实例对象、类、元类

    对象 OC是C语言的扩展,OC中的对象是由C语言中结构体实现的。2006年苹果发布Objc 2.0 对象,类,元类...

  • UI - UIView

    UIView 设置尺寸位置属性 OC规定:不能直接修改OC对象的结构体属性的成员,需要局部变量 Swift无此限制

  • category可以添加成员变量?

    OC 是不能直接修改对象的结构体的成员变量属性,一般做法是先取出对象的结构体变量,修改该取出来的结构体变量里面的成...

  • 结构体作为对象的属性

    定义一个结构体 在类中定义 使用. 初始化Student 结构体初始化不能像下面这样写 原因是:1.结构体只能在定...

网友评论

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

    本文链接:https://www.haomeiwen.com/subject/iicphxtx.html