【发布时间】:2023-03-03 12:10:02
【问题描述】:
很抱歉这个简单的问题。
当我在h file 内看到一个属性的定义,但在@interface 类范围内在 之外,这是什么意思?
@property (nonatomic, readonly) RMMapContents *mapContents;
代码如下:
@class RootViewController;
@class RMMapContents;
@interface MapTestbedAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
//MAIN VIEW
//==============
RootViewController *rootViewController;
// NETWORK DATA
// =============
NSMutableArray *photoTitles; // Titles of images
NSMutableArray *photoSmallImageData; // Image data (thumbnail)
NSMutableArray *photoURLsLargeImage; // URL to larger image
NSMutableData *receivedData;
NSURLConnection *theConnection;
NSURLRequest *request;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet RootViewController *rootViewController;
@property (nonatomic, readonly) RMMapContents *mapContents;
@end
在函数内部我看到这一行:
- (void)foo:(xyz *)abc{
..
RMMapContents *mapContents = [self mapContents];
..
}
所以,从 C++ 中获取,mapContents 似乎不是全局范围的 var(毕竟,这就是他们称它们为属性的原因,对吧?),但在函数内部没有再次定义相同的名称有点奇怪?
我希望有人可以在这里澄清一点。
谢谢!
【问题讨论】:
-
你确定
@property是在@interface部分之外声明的吗,因为如果我这样做会产生编译错误。 -
超出范围是什么意思?在你的问题中给出你对接口的所有定义。
标签: iphone objective-c ios properties