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