为什么Objective-C/Cocoa中的宏?

Joe*_*Joe 4 macros objective-c

我来自一个没有宏的地方(Java/Python/C#/ Scala),所以也许我的观点是扭曲的,但......

为什么在Cocoa中使用宏?想到的两个是NSLocalizedStringNSAssert(和STAssert).将这些功能(可以内联)变得如此困难/不合适?我想我发现它们有点离奇是对C的不必要的回击(是的,我熟悉Obj-C的血统书).

它只是在当天完成的事情还是有特定的原因?

Geo*_*che 8

一般来说,最好避免使用宏,但对于提供的功能NSAssert(),你不能这样做.

如果你看一下定义,你会看到它使用了__LINE__,__FILE__,_cmdself从它在使用的情况下,如果它不是一个宏,就无法获得这些信息.

对于NSLocalizedString不过,我看不出有什么明显的原因.