.m文件肯定有 @synthesize gravity = _ gravity;吧,相当于给个另外的名字,self. gravity附值会调用set方法
在setGetvity : (Getvity*) newGetvity 中应该也有一行代码是 _getvity = newGetvity;吧,set.gravity会调用get方法也就是-(UIGravityBehavior*)gravity,你那里相当于无限递归调用了,模拟器应该主线程卡死了
在setGetvity : (Getvity*) newGetvity 中应该也有一行代码是 _getvity = newGetvity;吧,set.gravity会调用get方法也就是-(UIGravityBehavior*)gravity,你那里相当于无限递归调用了,模拟器应该主线程卡死了
-(UIGravityBehavior*)gravity {}
这个访问gravity属性的方法。回归到你的问题,如果你在gravity 的访问器内部再使用self.gravity来访问,运行时当碰到self.gravity单独出现或出现在语句左边时,都表示在访问,这时会自动跳转到getter访问器中执行get访问。所以你在(1)处使用self.gravity会使你的访问递归调用,直至耗尽内存。第(2)处的 [self.animator addBehavior:_gravity]; self.animator 在右侧出现表示我们在给animator这个属性赋值,也就是会调用animtor属性 的setAnimator方法。这里使用self.animator 可能在赋值时处理一些其它的逻辑。如果没有,也可以直接用局部变量来替换。
嗯,是我看错了,你的理解是对的。