目标c无法定义宏

OMG*_*POP 3 iphone objective-c cocos2d-iphone ios

我有这个

#define sud [NSUserDefaults standardUserDefault]
Run Code Online (Sandbox Code Playgroud)

然后我用[sud integerForKey:key]

编译警告:

Class method '+standardUserDefault' not found (return type defaults to 'id')
Run Code Online (Sandbox Code Playgroud)

运行时错误:

+[NSUserDefaults standardUserDefault]: unrecognized selector sent to class 0x3c0bc850
Run Code Online (Sandbox Code Playgroud)

但我可以使用另一个没有任何警告:

#define man [Manager sharedManager]
Run Code Online (Sandbox Code Playgroud)

其中'man'是游戏经理(单身人士)来存储游戏得分等

Nik*_*uhe 8

这是standardUserDefaults(带有s).

两种风格的笔记:

  • Cocoa不鼓励使用缩写.
  • 您应该考虑删除宏,因为它们使代码的可读性和可理解性降低,正如您的拼写错误所证明的那样.