Swift 属性 在 ObjC++ 中访问
Swift property access in ObjC++
我有一个大问题!
我尝试在 ObjC++ class 中使用 Swift 属性 但没有任何效果!
我的 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++ 中 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
" 在你的 Objective C 代码中是一个 class,所以你似乎想做的是从 [=26] 中得到一个 属性 =], 不是 class.
的实例
您可以从 class 的实例(或对象)访问 属性,因此 G
需要成为您的 initWithFrame
中的参数,或者它需要在您的 Obj-C 对象中成为它自己的 属性(例如 self.G.hST
)。
您可以做的另一件事是将 hST
属性 声明为 class
函数(例如,看 at this related question)。即:
@objc class G: NSObject {
class func hST() -> CGFloat {
return 200
}
}
感谢您的回复。是工作 !
但我做了一点改动,因为我想将 属性 保持为静态 属性.
在我的 class G:
static var _hST:CGFloat = 300.0
static func hST() -> CGFloat { return _hST }
所以我可以修改另一个里面的值 Swift class.
在我的 ObjC class 中,我使用:
NSLog(@"hST -> %f", [G hST]);
非常感谢!
我有一个大问题!
我尝试在 ObjC++ class 中使用 Swift 属性 但没有任何效果!
我的 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++ 中 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
" 在你的 Objective C 代码中是一个 class,所以你似乎想做的是从 [=26] 中得到一个 属性 =], 不是 class.
您可以从 class 的实例(或对象)访问 属性,因此 G
需要成为您的 initWithFrame
中的参数,或者它需要在您的 Obj-C 对象中成为它自己的 属性(例如 self.G.hST
)。
您可以做的另一件事是将 hST
属性 声明为 class
函数(例如,看 at this related question)。即:
@objc class G: NSObject {
class func hST() -> CGFloat {
return 200
}
}
感谢您的回复。是工作 ! 但我做了一点改动,因为我想将 属性 保持为静态 属性.
在我的 class G:
static var _hST:CGFloat = 300.0
static func hST() -> CGFloat { return _hST }
所以我可以修改另一个里面的值 Swift class.
在我的 ObjC class 中,我使用:
NSLog(@"hST -> %f", [G hST]);
非常感谢!