Objective c Swift头文件是使用重复属性创建的
我在Objective-C中使用了一个Swift类,使用的是自动创建的“ProjectName Swift.h”文件。不幸的是,每次编译时,我都会在该文件中得到一个错误: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-
// 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
}
}
}