【发布时间】:2011-01-08 23:32:02
【问题描述】:
我正在缓慢但肯定地阅读 Apple 的密集文档,但我真的要问一个问题。给出以下示例代码:
#import "MonthArray.h"
@implementation MonthArray
static MonthArray *sharedMonthArray = nil;
static NSString *months[] = { @"January", @"February", @"March",
@"April", @"May", @"June", @"July", @"August", @"September",
@"October", @"November", @"December" };
+ monthArray
{
if (!sharedMonthArray) {
sharedMonthArray = [[MonthArray alloc] init];
}
return sharedMonthArray;
}
- (unsigned)count
{
return 12;
}
- objectAtIndex:(unsigned)index
{
if (index >= [self count])
[NSException raise:NSRangeException format:@"***%s: index
(%d) beyond bounds (%d)", sel_getName(_cmd), index,
[self count] - 1];
else
return months[index];
}
@end
这是我的问题(我很抱歉没有创建多个线程,但据我所知 - 这些都是相当基本的。)
显示 +monthArray 究竟是什么意思?我知道 + 表示它是一个类方法,但我不完全理解它有什么含义。它与普通方法究竟有何不同?
这段代码中整个 sharedMonthArray ivar 的目的是什么?我的意思是,objectAtIndex: 方法是从月份的字符串中提取的,那么有什么意义呢?
[self count] 方法中的“self”是什么?我的意思是,我知道它应该是几个月,但是我在程序中哪里可以看到呢?是什么让 [self count] 计算月份而不计算 MonthArrays 的数量?
抱歉,如果我的问题是初级问题,我仍在学习 - 提前感谢您的帮助。
【问题讨论】:
-
sharedMonthArray 不是 ivar,它只是一个范围为当前文件的变量。实例变量或 ivar 是属于对象的变量。对象是类的实例,因此得名“ivar”。
标签: objective-c cocoa