我在stackoverflow中读到了这个question。
bbum提供的摘录答案如下:
问题不在于任务,更有可能是你 声明你的实例变量为BOOL * initialBroadcast;。
没有理由将实例变量声明为指针 (至少除非你真的需要一个C数组的BOOL)。删除 宣言中的*。
1.即使我不需要维护一个BOOL数组,使用指针变量有什么问题吗?
2.我认为即使避免它们是一种好的做法,它也不是针对Objective-C的,并且适用于所有具有指针的编程语言。
请回答我的问题。
答案 0 :(得分:2)
1.即使我不需要维护一个BOOL数组,使用指针变量有什么问题吗?
这样做并不违法,但这是不好的做法。使用指针变量需要您管理该内存(分配并释放它),并且可能会出现整个类的错误。如果您忘记分配内存或意外修改指针,程序可能会崩溃,或者您可能会覆盖内存的其他部分。如果您忘记释放内存,则会出现内存泄漏。如果您只使用普通的BOOL,这些事情都不会发生。另外,你在这里使用指针也没有任何好处;你做了很多额外的工作,并得不到任何回报。
2.我认为即使避免它们是一种好的做法,它也不是特定于Objective-C并且适用于所有编程语言 指针。
我不知道“有[指针]的所有编程语言”,但我肯定会说任何基于C语言(C,C ++,Objective-C),使用指向内在类型的指针是不好的做法当这种类型的普通变量可以做。如果您可以避免进行内存管理,请执行此操作。
另一方面,是听取所有bbum所说的好习惯。严重。