[学习小结]developing iOS7 for iPhone and iPad 1~3

[学习小结]developing iOS7 for iPhone and iPad 1~3,第1张

概述深入理解@property、@synthesize、_XXXXX 在iOS中,有一个固定的规则,也就是在 @interface@property(nonatomic, assign) int x;@end@implementation@synthesize x = _x;@end @property中的x是类的属性,_x是实例变量,@synthesize将x与_x绑定起来,自动生成了变 深入理解@property、@synthesize、_XXXXX
在iOS中,有一个固定的规则,也就是在
@interface@property(nonatomic,assign) int x;@end@implementation@synthesize x = _x;@end

@property中的x是类的属性,_x是实例变量,@synthesize将x与_x绑定起来,自动生成了变量x的setter与getter方法。
what is the advantage of doing @synthesize myvar = _myvar (if any)? 里面解释的很到位,之所以会有_x,是为了避免命名冲突,比如下例中就产生了命名冲突。然而服务器已经帮你考虑到了,自动为你的属性生成一个带_x的变量。

@interface {    int x;}@end@impleMetation-(voID)something:(int)x{}@end
@sythesize的作用就是将property和实例变量绑定,并自动生成getter和setter的方法。

2. 在Objective-C中,访问变量有两种方法,self.XXX方法和_XXX方法。区别在于,self.XXX方法会触发setter和getter函数,而后者不会,因此建议set数值的时候用self.XXX方法,get数值的时候用_XXX方法,这样子速度稍微快些,不用通过方法转接直接访问地址内容。
然而也有例外情况,比如在课程2的时候有注解,父类setXXX访问XXX使用self.XXX的方法,子类继承父类,假如子类的getter方法需要控制XXX的值,子类的setter方法就不需重写也可以利用self.XXX方式享受到子类getter方法的过程。
3. 使用Storyboard或nib开发app时,IBOutlet属性使用weak特质,如下:

@interface@property(weak,nonatomic)IBOutlet UILabel *flipsLabel@end

作者的原因是MVC的VIEw已经持有了对象UILabel,Controller无需再持有该对象,因为当UILabel离开VIEw的时候,可能Controller并不像保留一个指向该对象的指针,假如你想继续保留该指针,那么你应该使用strong(但是这种情况很少)

然而这和我的所知有点出入,作者说的并没错,也许某个控件被移除出VIEw并不会再回来,控件占有空间被释放,还省内存。然而在stackoverflow看到Should IBOutlets be strong or weak under ARC?苹果的工程师是酱紫说的:

And the last option I want to point out is the storage type,which can either be strong or weak. In general you should make your outlet strong,especially if you are connecting an outlet to a subvIEw or to a constraint that’s not always going to be retained by the vIEw hIErarchy. The only time you really need to make an outlet weak is if you have a custom vIEw that references something back up the vIEw hIErarchy and in general that’s not recommended.

就用途来说,可以采用weak也可以用strong,使用的情况和上面分析的一直,但是还是不推荐用weak的做法。

总结

以上是内存溢出为你收集整理的[学习小结]developing iOS7 for iPhone and iPad 1~3全部内容,希望文章能够帮你解决[学习小结]developing iOS7 for iPhone and iPad 1~3所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1088377.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存