结构体作为成员变量

2018-11-01  本文已影响0人  SimpleSJ

注意: 在ARC环境下,在结构体中使用objc对象,必须使用_unsafe_unretained,这个是苹果的规定。

//案例:人拥有一条狗,狗为结构体

//Person类 .h
#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

typedef struct  {
    __unsafe_unretained NSString *name;
    NSString *name;
    int age;
    double height;
} Dog;

@interface Person : NSObject
{
    @public
    __unsafe_unretained NSString *_name;
    Dog _dog;
    int _age;
}
-(void)say;
@end

NS_ASSUME_NONNULL_END

//Person类 .m
@implementation Person
-(void)say{
    NSLog(@"my name is %@, age is %d ,my dog's name is %@,my dog's height is %f,my dog's age is %d",_name,_age,_dog.name,_dog.height,_dog.age);
}
@end

//controller 中创建一个人对象
    Person *person = [Person new];
    person->_name = @"sj";
    person->_age = 25;
    Dog d = {.name = @"wc",.age = 3,.height = 0.66};
    person->_dog = d;
    [person say];
//输出:
my name is sj, age is 25 ,my dog's name is wc,my dog's height is 0.660000,my dog's age is 3
上一篇 下一篇

猜你喜欢

热点阅读