.h
@property (nonatomic,strong) WKWebView *myWebView;//属性
.m
{
WKWebView *myWebView;//实例变量
}
报一个警告 告诉你我要自动的生成一个_myWebView的实例变量,而不会使用_myWebView变量 因为@property.
Paste_Image.png
.h不变
.m 加上了
@synthesize myWebView;
现在只能用myWebView了,因为@synthesize myWebView;就是生成myWebView实例变量来对应@property,当然了如果有了myWebView的实例变量就不用再生成了,直接用就好了.
不自己生成myWebView实例变量,就会自动生成
Paste_Image.png
如果@synthesize myWebView = xxx,那么就用xxx对应@property
Paste_Image.png
现在的版本中 只用@property就可以了,自动生成set和get方法,检查有没有_xxx的实例变量,没有就自己生成,有就直接用,@synthesize 就不会自动生成_xx了 要根据@synthesize 后面的代码怎么写
参考文章:http://www.cnblogs.com/crazypebble/p/3439261.html
http://blog.csdn.net/jabony/article/details/19021539
http://cuichang.iteye.com/blog/1073201
http://my.oschina.net/iamzkt/blog/126503
http://www.jianshu.com/p/d9759dd1fb2e
类别中的属性property
类与类别中添加的属性要区分开来,因为类别中只能添加方法,不能添加实例变量。经常会在ios的代码中看到在类别中添加属性,这种情况下,是不会自动生成实例变量的。比如在:UINavigationController.h文件中会对UIViewController类进行扩展
@interface UIViewController (UINavigationControllerItem)
@property(nonatomic,readonly,retain) UINavigationItem *navigationItem;
@property(nonatomic) BOOL hidesBottomBarWhenPushed;
@property(nonatomic,readonly,retain) UINavigationController
*navigationController;
@end
这里添加的属性,不会自动生成实例变量,这里添加的属性其实是添加的getter与setter方法。
注意一点,匿名类别(匿名扩展)是可以添加实例变量的,非匿名类别是不能添加实例变量的,只能添加方法,或者属性(其实也是方法)。
网友评论