了解Objective-C引用表示法

时间:2012-02-09 03:46:54

标签: objective-c

有人可以解释Objective-C的文档格式:

如,

+ (id)arrayWithObject:(id)anObject
  1. 为什么加号?为什么在某些情况下会减号?当这些代码行出现在参考页面中每个任务的开头时,你们能帮助我准确理解格式是什么吗?

  2. 当方法定义如下时,这是什么意思:

    -(NSString *)description
    
  3. 为什么*在那里?它是指针的东西吗?为什么它的格式是这样的?

2 个答案:

答案 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对象的指针。