需要初始化NSSet吗?

Jac*_*ack 1 null initialization objective-c set xcode4

他们使用Xcode 4进行了一些更改,所以我想知道是否需要通过以下方式初始化NSSet:

NSMutableSet *variablesUsed = [NSMutableSet set];
Run Code Online (Sandbox Code Playgroud)

或者是

NSMutableSet *variablesUsed;
Run Code Online (Sandbox Code Playgroud)

足够?还是第二个选项初始化为nil?这和空集一样吗?

谢谢你的帮助!

lna*_*ger 5

如果只使用它,NSMutableSet *variablesUsed;那么您将获得一个设置为的指针,nil因此不会指向任何类型的集合。 nil表示它设置为空,并且与空集不同。您将无法使用任何功能,nil因此需要将variablesUsed设置为某些“实际”设置,以充分利用它。

当您使用NSMutableSet *variablesUsed = [NSMutableSet set];NSMutableSet *variablesUsed = [[NSMutableSet alloc] init];将指针设置为一个全新的空集时,该指针已初始化且可以使用。

  • [NSMutableSet set]是自动释放对象,[[NSMutableSet alloc] init]是保留对象(您必须释放该对象)。 (2认同)