代码示例
#import "ViewController.h"
typedef struct point {
int x;
int y;
} origin;
struct objc {
int i;
NSString *str;
UIViewController *control;
origin myPoint;
};
typedef struct objc my;
@interface ViewController ()
@property my test;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
struct point myOrigin = (origin){3,4};
struct objc obj = (my){1,@"2",self};
obj.i = 2;
NSLog(@"%@",obj.str); //@"2"
self.test = obj;
self.test.myPoint = myOrigin;
// _test.myPoint = myOrigin; 这段代码是不会有任何报错的
}
@end
对象中的结构体属性中的属性是不允许作单独修改的
解决办法:
结构体和类的区别
1.类可以添加方法
2.结构体在栈区,类在堆区
3.结构体是值类型,类是引用类型
4.类可以继承
参考:
oc中 结构体与类的区别