2

我最近在使用 XCode 4.2 和 Apple LLVM 编译器 3.0 / LLVM-GCC 处理我公司的 iOS 项目时处理了几个问题。

下面是代码

A.h
@interface A{
   int _count;
};
@property(nonatomic,assign) count; 
@end
A.mm
@implementation A
@synthesize count = _cont;//note a typo here !!!
//... I use _count in below code 
@end

错字不会产生编译错误或警告,编译器或运行时(实际上我不确定是谁做的,我最好的猜测应该是编译器)将为我们生成一个 _cont 实例 ivar。

此功能非常适合封装。我们的头文件可能会更干净。然而,这样的错字很难注意到。所以我想知道是否有任何设置可以为这种情况生成警告?我搜索 Clang 的官方网站没有任何发现。

有人会建议我根本不要在类接口中声明实例并始终使用 self.count。首先我不喜欢这种代码风格,其次在某些情况下,您的“setCount”方法可能会做的不仅仅是更改实例值,最后我们在引入此功能之前就开始了我们的产品。我不想改变现有代码的风格。

这里有人遇到同样的问题吗?有什么好的想法和最佳实践吗?

4

1 回答 1

0

这是不可能的。编译器应该如何识别你的错字?

此外,您应该已经认识到不再需要为您的财产编写自己的 ivar,因为 @synthesize count = _count; 已经足以在代码后面通过 _count 与您联系 iVar。

于 2012-04-27T09:09:48.627 回答