Objective c Swift头文件是使用重复属性创建的

Objective c Swift头文件是使用重复属性创建的,objective-c,swift,Objective C,Swift,我在Objective-C中使用了一个Swift类,使用的是自动创建的“ProjectName Swift.h”文件。不幸的是,每次编译时,我都会在该文件中得到一个错误: // Generated by Swift version 1.0 (swift-600.0.34.4.8) #if defined(__has_include) && __has_include(<swift/objc-prologue.h>) # include <swift/objc-

我在Objective-C中使用了一个Swift类,使用的是自动创建的“ProjectName Swift.h”文件。不幸的是,每次编译时,我都会在该文件中得到一个错误:

// Generated by Swift version 1.0 (swift-600.0.34.4.8)

#if defined(__has_include) && __has_include(<swift/objc-prologue.h>)
# include <swift/objc-prologue.h>
#endif

#include <objc/NSObject.h>
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>

....
....

@interface UISoundBar : UIView
@property (nonatomic) NSInteger barNumber;
@property (nonatomic) UIColor * barColor;
@property (nonatomic) CGFloat barHeight;
@property (nonatomic) CGFloat barSpacing;
@property (nonatomic) NSArray * bars;
- (instancetype)initWithFrame:(CGRect)frame OBJC_DESIGNATED_INITIALIZER;
- (void)showBars;
- (void)setupBars;
@property (nonatomic) NSArray * bars.storage;
@end
声明“属性具有以前的声明”和“丢失;”。一旦我删除这一行,一切正常。每次我编译这个项目时都要删除它,真是讨厌。有什么想法吗

编辑:以下是生成上述内容的原始swift类:

import Foundation
import UIKit

class UISoundBar : UIView {

  var barNumber = 4
  var barColor: UIColor = UIColor.redColor()
  @lazy var barHeight:CGFloat = {
     return (self.frame.height - CGFloat(self.barNumber) * self.barSpacing) /  CGFloat(self.barNumber)
  }()
  var barSpacing:CGFloat = 0.4
  @lazy var bars:UIView[] = {
    var tempArr:UIView[] = []
    for i in 1...self.barNumber {
      var v = UIView(frame: CGRectMake(0, CGFloat(i - 1) * (self.barHeight + self.barSpacing), self.frame.size.width * 0.1, self.barHeight))
      tempArr.append(v)
    }
    return tempArr
  }()

  init(frame: CGRect) 
  {
    super.init(frame: frame)
  }

  func showBars()
  {
    for bar in self.bars{
      self.addSubview(bar)
    }
  }

  func setupBars()
  {
    for bar in self.bars {
      bar.backgroundColor = self.barColor
    }
  }
}

使用点语法声明属性,您试图实现什么?属性声明不允许您这样做,而且由于已经声明了
bar
,所以它会告诉您您正在尝试重新声明它

如果我理解正确,
UISoundBar
被定义为Swift类。可以显示该类的“原始”Swift属性定义吗?好的,添加了Swift源在Objective-C类中使用
@lazy
似乎有问题。这里出现了一个类似的问题:。如您所见,此文件是在编译时自动创建的。很抱歉,我滚动了太多,没有看到首行显示“由Swift生成…”。正如@Martin-R所说,您能否展示“原始”Swift属性定义?这有助于我们了解为什么它会以这种方式产生。也可能是一个bug,在这种情况下,您可能需要提交一个雷达文件。
import Foundation
import UIKit

class UISoundBar : UIView {

  var barNumber = 4
  var barColor: UIColor = UIColor.redColor()
  @lazy var barHeight:CGFloat = {
     return (self.frame.height - CGFloat(self.barNumber) * self.barSpacing) /  CGFloat(self.barNumber)
  }()
  var barSpacing:CGFloat = 0.4
  @lazy var bars:UIView[] = {
    var tempArr:UIView[] = []
    for i in 1...self.barNumber {
      var v = UIView(frame: CGRectMake(0, CGFloat(i - 1) * (self.barHeight + self.barSpacing), self.frame.size.width * 0.1, self.barHeight))
      tempArr.append(v)
    }
    return tempArr
  }()

  init(frame: CGRect) 
  {
    super.init(frame: frame)
  }

  func showBars()
  {
    for bar in self.bars{
      self.addSubview(bar)
    }
  }

  func setupBars()
  {
    for bar in self.bars {
      bar.backgroundColor = self.barColor
    }
  }
}