2
我最近在使用XCode 4.2和Apple LLVM complier 3.0/LLVM-GCC处理我公司的iOS项目时处理了几个问题。目标C:如何为未在类的接口中声明的实例变量生成警告?
下面是代码
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”方法可能会做更多的事情,而不仅仅是更改实例值,最后我们在引入此功能之前就开始了我们的产品。我不想改变现有代码的风格。
是否有人在这里遇到同样的问题?有什么好的想法和最佳实践?
它的可能性,即编译器可以读取宣布伊娃的名字,读属性的名称领域内,读取合成伊娃的名字,看到前两个比赛和第三没有,并发出了“你的意思?”警告。 – 2012-04-27 18:29:27
从XCode 4.4开始看来,我们不需要编写@synthesize或定义备份iVar。只要声明一个属性就足够了。我们应该习惯于语言和编译器的改变。看起来改变的哲学是:编译器为你做更多的事情。接受答案应该是不可能的。 – 2012-11-17 10:43:55