Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c ObjC和x2B中的Swift财产访问+;_Objective C_Swift_Class_Properties_Wrapper - Fatal编程技术网

Objective c ObjC和x2B中的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

我有个大问题

我尝试在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: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]);
非常感谢