Objective c ObjC和x2B中的Swift财产访问+;
我有个大问题 我尝试在ObjC++类中使用Swift属性,但没有任何效果 我的斯威夫特班:Objective c ObjC和x2B中的Swift财产访问+;,objective-c,swift,class,properties,wrapper,Objective C,Swift,Class,Properties,Wrapper,我有个大问题 我尝试在ObjC++类中使用Swift属性,但没有任何效果 我的斯威夫特班: 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:CGFlo
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++class.h中:
@class G;
在ObjC++class.mm中:
#import "PROJECT-Swift.h"
...
- (id)initWithFrame:(CGRect)frame {
NSLog(@"Property : %@", [G sizeST]);
// With static var
NSLog(@"Property : %f", G.hST);
}
怎么了?
感谢您的帮助…“G
”在您的目标C代码中,代码是一个类,因此您似乎试图从类中获取属性,而不是该类的实例
您可以从类的实例(或对象)访问属性,因此G
需要是initWithFrame
中的参数,或者它需要是Obj-C对象中自己的属性(例如self.G.hST
)
您可以做的另一件事是将hST
属性声明为类
函数(例如look)。即:
@objc class G: NSObject {
class func hST() -> CGFloat {
return 200
}
}
“G
”在您的目标C代码中,代码是一个类,因此您似乎试图从类中获取属性,而不是该类的实例
您可以从类的实例(或对象)访问属性,因此G
需要是initWithFrame
中的参数,或者它需要是Obj-C对象中自己的属性(例如self.G.hST
)
您可以做的另一件事是将hST
属性声明为类
函数(例如look)。即:
@objc class G: NSObject {
class func hST() -> CGFloat {
return 200
}
}
谢谢你的回复。这是工作! 但我做了一点改变,因为我想把属性保持为静态属性 在我的G班:
static var _hST:CGFloat = 300.0
static func hST() -> CGFloat { return _hST }
所以我可以在另一个Swift类中修改该值
在我的ObjC类中,我使用:
NSLog(@"hST -> %f", [G hST]);
非常感谢 谢谢您的回复。这是工作! 但我做了一点改变,因为我想把属性保持为静态属性 在我的G班:
static var _hST:CGFloat = 300.0
static func hST() -> CGFloat { return _hST }
所以我可以在另一个Swift类中修改该值
在我的ObjC类中,我使用:
NSLog(@"hST -> %f", [G hST]);
非常感谢