美文网首页
结构体和类的区别

结构体和类的区别

作者: 程序萌 | 来源:发表于2018-06-27 11:47 被阅读0次

    一、定义一个结构体

    typedef struct {
        int age;
        //在结构体中定义OC对象会报错:ARC forbids Objective-C objects in structs 
        //需要添加__unsafe_unretained
       __unsafe_unretained NSString * name;
    } LYMStruct;
    

    二、使用

    LYMStruct myStruct = {22,@"张三"};
    // 两种赋值方法
    // myStruct.age = 22;
    // myStruct.name = @"张三";
     NSLog(@"%@-- %d",myStruct.name,myStruct.age);
    

    三、结构体和OC类的区别

    结构体:

    • 只能封装属性,不能封装方法;
    • 分配在栈上

    OC类:

    • 可以封装属性和方法;
    • 分配在堆上

    四、如何选择结构体还是OC类

    • 因为栈空间相对堆来说比较小,但是数据访问效率比堆要高,所以我们定义很多属性的话,在堆中使用OC类
    • 如果不需要定义很多的属性,并且不需要定义方法的话,我们在栈中使用结构体

    相关文章

      网友评论

          本文标题:结构体和类的区别

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