您必须了解“属性”的含义,使用“点”只是一种更快的方式来调用“特殊方法”,这些方法只是为了“设置”和“获取”变量属性而创建的。
例如,您可以拥有自己的使用子视图的类/UIView:
在 myView.h
@interface myView : UIView {
UIWebView *webView;
}
如果你这样做,你就没有“属性”,而只是一个对象......所以在你的 myView.m 中,你尝试像这样使用“点”:
NSLog(@"%i", self.webView.frame.size.width);
然后你得到一个错误,你不能这样做,xCode说:错误:访问未知的'webView'getter方法
这只是意味着“webView”方法不存在......因为当你调用“self.webView”时,你只需调用一个名为“webView”的方法......这个方法只是返回指向你的值的指针。当你打电话时:
self.webView=someValue;
你只是在调用方法“setWebView”,这个方法只是用 someValue 设置你的对象......
但是……这两种看不见的方法是从哪里来的?
如果您告诉它使用 webView 作为属性,它们是由 xCode 本身创建的......在我们的示例中,添加一些行:
在 myView.h
@interface myView : UIView {
UIWebView *webView;
}
@property (nonatomic, retain) UIWebView *webView;
在 myView.m
@implementation myView
@synthesize webView;
// ...
执行此操作 xCode 将为您添加 2 个方法“webView”和“setWebView”,现在您可以调用:
NSLog(@"%i", self.webView.frame.size.width);
没有错误...
你可以把值(正确的格式,在这种情况下是一个指向现有 UIWebView 的指针)只调用:
self.webView = aUIWebView;
并记得释放它,因为你使用了“保留”:
@property (nonatomic, retain) UIWebView *webView;
释放它:
[webView release];