有人可以解释Objective-C的文档格式:
例如,
+ (id)arrayWithObject:(id)anObject
-(NSString *)description
*
在那里?它是指针的东西吗?为什么它的格式是这样的?为什么加号?为什么在某些情况下会减号?
加号表示该方法是类方法。你在类上调用它,它返回一个类的实例。所以:+arrayWithObject:
会像这样调用:
NSArray *myArray = [NSArray arrayWithObject:someObject];
这将创建一个名为NSArray*
的myArray
的单元素实例,其中包含对someObject
的引用。
(为简洁起见,我不打算进入这种方法的内存管理方面,除了说autorelease
将在myArray
的生命周期结束时为你调用。此方法的另一个变体将返回一个保留的NSArray*
实例你自己必须使用release
,如果阵列需要超出其所处功能的生命周期,你可能更喜欢它。阅读Apple的Memory Management Programming Guide,或者阅读Objective-C教程或书籍。了解如何管理内存至关重要成功的Objective-C开发。)
减号表示该方法是实例方法。您在类的实例上调用它,并返回其他内容,如数字或其他对象。
举个例子,假设我们想知道我们刚刚制作的NSArray
实例中的对象数量。所以我们在-count
上调用myArray
方法:
NSUInteger numberOfObjects = [myArray count];
NSLog(@"there are %u objects in myArray", numberOfObjects);
(注意在*
之前没有NSUInteger
。这是因为NSUInteger
不是对象类型,而是Apple用于unsigned int
C数据类型的另一个名称。)
-count
实例方法的声明是:
-(NSUInteger)count;
这将在下面解释。
当方法定义如下时,这意味着什么:...为什么*存在?它是指针的东西吗?为什么它的格式是这样的?
以下方法:
-(NSString *)description
声明我们有一个名为-description
的实例方法,它在类的实例上运行(无论该类可能是什么,比如NSArray*
实例)并返回一个NSString*
,它给出了该实例的description
。
请注意,此方法返回NSString*
而不是NSString
。那是因为这些函数传递引用或指向对象的指针,而不是对象本身。
如果我们在-description
上调用myArray
,假设它包含someObject
,那么Xcode控制台将显示myArray
及其内容的描述:
NSLog(@"%@", [myArray description]);
请注意,Apple提供了一个快捷方式,当与-description
一起使用时,会在对象上自动调用NSLog()
。所以你也可以做以下事情:
NSLog(@"%@", myArray);
为了在-description
上打电话给myArray
。
因为在-description
语句中对对象调用NSLog()
是多余的,所以Objective-C开发人员首选第二种方法。
1.'+'表示该函数是静态的,而' - '表示该函数需要一个实例。静态函数是您不需要实例而是调用类的函数。通常这些是初始化程序,它们将向您返回自动释放实例。
是的,那是因为它是一个指向NSString目标C对象的指针
3. - (NSString *)描述
这意味着您正在查看doc的类具有一个名为description的方法,该方法在该类的实例上调用时将返回指向NSString对象的指针。