3 回答
TA贡献1880条经验 获得超4个赞
使用self会导致您的类的“设置者”被调用,而不是直接更改ivar。
self.mainViewController = aController;
等效于:
[self setMainViewController:aController];
另一方面:
mainViewController = aController;
只需mainViewController直接更改实例变量,就可以跳过UIApplication setMainViewController方法中可能内置的任何其他代码,例如释放旧对象,保留新对象,更新内部变量等。
在访问框架的情况下,您仍在调用setter方法:
mainViewController.view.frame = [UIScreen mainScreen].applicationFrame;
扩展为:
[[mainViewController view] setFrame:[[UIScreen mainScreen] applicationFrame]];
理想情况下,为了将来验证您的代码,也应该在检索此值时也使用self.mainViewController(或[self mainViewController])。通常,类在其“ getter”方法中比在其“ setters”中具有重要代码的可能性要小得多,但是直接访问仍然有可能在将来的Cocoa Touch版本中破坏某些功能。
TA贡献1995条经验 获得超2个赞
该self
关键字表明您正在使用属性的getter / setter方法,而不是直接访问值。如果让您使用同步功能自动生成getter / setter,则在第一个示例中必须使用self,因为对象保留在此处,而不仅仅是指针分配的对象。
TA贡献1848条经验 获得超2个赞
除了在自己的getter和setter方法内部(如果您编写自己的方法)之外,您应该始终使用self。这样,可以自动为您处理对象保留。您还可以提供自定义代码来执行诸如验证iVar之类的操作,或者保留自零的功能。除了getter和setter方法之外,几乎没有任何直接访问iVar的理由。虽然,许多人通常是出于错误或懒惰。
- 3 回答
- 0 关注
- 545 浏览
添加回答
举报