XCode对Objective-C属性的语法检查很差?

ctp*_*ose 1 xcode objective-c xcode3.2

我无意中编译了以下声明:

manager.groupName - lastGroupName;
Run Code Online (Sandbox Code Playgroud)

代替:

manager.groupName = lastGroupName;
Run Code Online (Sandbox Code Playgroud)

我试图理解为什么编译器甚至没有为我无意中提供的前一个语句提供警告.该声明没有任何效果,即使它是合法的减去彼此之间的指针.

groupName和lastGroupName都是类型(NSString*).groupName属性声明为:

@property (nonatomic, retain) NSString *groupName;
Run Code Online (Sandbox Code Playgroud)

想知道我是否应该访问bugreporter或者是否有原因导致XCode没有提供诊断.

Sve*_*ven 5

这是C语言中的合法语句,因此也是Objective-C中的合法语句,因此编译器不必对此进行警告.您可以将警告标志添加-Wunused-value到编译器设置中.这会警告那些没有这种效果的陈述.

通常有很多标志告诉编译器究竟要警告什么.每个人都有不同的想法什么是好的,应该警告什么.如果编译器发出太多警告,它们将变得无用.

另请注意,clang确实会产生更好的警告和错误消息,但这并不意味着它会自动产生更多警告.它还具有相同的标志,用于启用和禁用gcc具有的某些警告.