我在stackoverflow中阅读了这个问题。
bbum提供的摘录答案如下:
问题不在于赋值,更有可能您将实例变量声明为 BOOL *initialBroadcast;。
没有理由将实例变量声明为指针(至少除非您确实需要 BOOL 的 C 数组).. 从声明中删除 *。
1.即使我不必维护 BOOL 数组,使用指针变量有什么问题吗?
2.我认为即使避免它们是一种好的做法,它也不是特定于objective-C,而是适用于所有有指针的编程语言。
请回答我的问题。
我在stackoverflow中阅读了这个问题。
bbum提供的摘录答案如下:
问题不在于赋值,更有可能您将实例变量声明为 BOOL *initialBroadcast;。
没有理由将实例变量声明为指针(至少除非您确实需要 BOOL 的 C 数组).. 从声明中删除 *。
1.即使我不必维护 BOOL 数组,使用指针变量有什么问题吗?
2.我认为即使避免它们是一种好的做法,它也不是特定于objective-C,而是适用于所有有指针的编程语言。
请回答我的问题。
1.即使我不必维护 BOOL 数组,使用指针变量有什么问题吗?
这样做并不违法,但这是不好的做法。使用指针变量需要您管理该内存(分配和释放它),因此可能会出现各种错误。如果您忘记分配内存,或者不小心修改了指针,您的程序可能会崩溃,或者您可能会覆盖内存的其他部分。如果您忘记释放内存,则会发生内存泄漏。如果您只使用普通的 BOOL,这些事情都不会发生。此外,在这里使用指针没有任何好处;你做了一堆额外的工作,却一无所获。
2.我认为即使避免它们是一种好的做法,它也不是特定于objective-C,而是适用于所有有指针的编程语言。
我不知道“所有[有]指针的编程语言”,但我肯定会说,在任何基于 C 的语言(C、C++、Objective-C)中,当一个普通的类型时使用指向内在类型的指针是不好的做法该类型的变量会做。如果您可以避免进行内存管理,请这样做。
顺便说一句,听 bbum 所说的一切是一个好习惯。严重地。