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