我有一个大问题!
我尝试在ObjC ++类中使用Swift属性,但没有任何作用!
My Swift Class:
let wST:CGFloat = 200
@objc class G: NSObject {
private override init() {}
class func sizeST() -> CGSize { return CGSize(width: wST, height: 200)}
// Another test
static var hST:CGFloat = 200
}
在ObjC ++类.h:
@class G;
在ObjC ++类.mm中:
#import "PROJECT-Swift.h"
...
- (id)initWithFrame:(CGRect)frame {
NSLog(@"Property : %@", [G sizeST]);
// With static var
NSLog(@"Property : %f", G.hST);
}
怎么了? 谢谢你的帮助...
答案 0 :(得分:1)
G
”是一个类,所以你想要做的就是从类中获取属性,而不是该类的实例。
您可以从类的实例(或对象)访问属性,因此G
需要是initWithFrame
中的参数,或者它需要是Obj-C中的属性对象(例如self.G.hST
)。
您可以做的另一件事是将hST
属性声明为class
函数(例如,查看at this related question)。那就是:
@objc class G: NSObject {
class func hST() -> CGFloat {
return 200
}
}
答案 1 :(得分:1)
感谢您的回复。它的工作! 但是我改变了一点因为我想将属性保留为静态属性。
在我班G:
static var _hST:CGFloat = 300.0
static func hST() -> CGFloat { return _hST }
所以我可以修改另一个Swift类中的值。
在我的ObjC课程中,我使用:
NSLog(@"hST -> %f", [G hST]);
非常感谢!