个人的觉得应该从值类型和引用类型出发去理解;我们知道,在OC中struct是值类型的,也就是说当将一个结构体赋值给另一个结构体时,二者实际上是相互独立互不影响的,那么对于文中说的这种情况,当使用@property修饰的结构体,我们虽然表面是可以直接访问到,但是实际上我们是调用的编译器自动生成的get方法,这样就会有问题,因为struct是值类型,所以get方法会返回一个完全独立的struct,而这种修改是完全没有意义的,所以,编译器就禁止了这种调用;而对于第二种情况,当使用@public修饰struct时,外部是直接访问到的该struct,而不是该struct的一个值拷贝,所以是可以的
![240](https://cdn2.jianshu.io/assets/default_avatar/9-cceda3cf5072bcdd77e8ca4f21c40998.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/240/h/240)