【发布时间】:2009-04-25 11:06:20
【问题描述】:
我想创建一个传递对象的函数。然后,这个函数应该为我打印出一些信息。
喜欢:
analyzeThis(anyObject);
我知道方法,但不知道如何创建函数。据我了解,一个函数在所有方法和类中都适用于全局,对吧?
【问题讨论】:
标签: iphone objective-c function
我想创建一个传递对象的函数。然后,这个函数应该为我打印出一些信息。
喜欢:
analyzeThis(anyObject);
我知道方法,但不知道如何创建函数。据我了解,一个函数在所有方法和类中都适用于全局,对吧?
【问题讨论】:
标签: iphone objective-c function
您可以像使用 C 编写的任何其他函数一样执行此操作。因此,如果您将函数定义在名为 myLibraryFunctions.m 的源文件中,任何想要使用该函数的人都将包含头文件你在哪里定义它(可能是myLibraryFunctions.h,然后确保它们与目标文件链接(如果你只是创建一个文件来容纳你的“全局”函数并包含标题,那么大部分这将在 Xcode 中为你完成)在您访问它的任何源文件中为它们创建文件。然后定义它:
void analyzeThis(id anyObject);
void analyzeThis(id anyObject) {
NSLog(@"Object %p: %zu, %@", anyObject, malloc_size(anyObject), anyObject);
}
但实际上,您可以在函数中编写任何您想要的内容。这些函数不必是任何类定义或类似内容的一部分。在这种情况下,它们与 C 中的完全相同。
【讨论】:
你是否尝试重新实现 NSObject 的描述方法?如果您发送 NSObject 消息,它将返回一个包含有关自身信息的字符串。您可以覆盖 -(NSString*)description 并向该字符串添加更多信息。
如果你这样做,你会发现神奇的事情发生了——例如,当你在调试器中打印一个数组对象时,它会迭代数组的所有成员并打印它们的描述。
【讨论】:
有两种方法可以做到这一点:
【讨论】: