从 Objective C 类调用 Swift 方法

Posted

技术标签:

【中文标题】从 Objective C 类调用 Swift 方法【英文标题】:Calling a Swift Method from Objective C class 【发布时间】:2014-10-20 23:57:01 【问题描述】:

我想在一个swift类和一个objective-c类之间创建一个继承。

swift类创建一个人,objective c类创建一个学生(也是一个人)

我的快人是:

import Foundation
class person 
var age: Int
var height: Float

init()
    self.age = 22
    self.heigh =1.80


init(age:Int, height:Float)
    self.age=age
    self.height=height


Objective-c 学生是:

学生.h:

#import <Foundation/Foundation.h>
#import "Praktikum2a-Swift.h"

@interface student : person

@property (nonatomic) int studentID;

-(void)setStudentID:(int)stdID;

@end

学生.m:

#import <Foundation/Foundation.h>
#import "Praktikum2a-Swift.h"
#import "student.h"

@implementation student

-(id)init
    return [self initWithStudentID:1337];


-(id)initWithStudentID:(int)stdID
    self=[super init];
    if(self)
        [self setStudentID:stdID];
    


@end

还有主要的:

#import <Foundation/Foundation.h>
#import "student.h"

int main(int argc, const char * argv[]) 
    @autoreleasepool 
        student *hugo = [[student alloc] init];

        [hugo setAge: 22 setHeight: 1.80];


        NSLog(@"Hello, World!");
    
    return 0;

项目和包名称是 Praktikum2a

基本上我想不通,为什么我的学生不是人... =/

【问题讨论】:

mixing objective-c and swift when subclassing的可能重复 附带说明,类名应始终大写。 所以我不能在目标 c 中子类化 swift 类? =/ 【参考方案1】:

这个页面上写着:https://developer.apple.com/library/ios/documentation/swift/conceptual/buildingcocoaapps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-XID_77

请注意,您不能在 Objective-C 中子类化 Swift 类

【讨论】:

以上是关于从 Objective C 类调用 Swift 方法的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用情节提要从 swift 类中调用 Objective c 视图控制器类?

从 Swift 调用 Objective C 自定义初始化函数

从 Swift 测试文件中调用 Objective-C 类

从 Swift 调用 Objective C 和 C 传递回调函数

从 Objective C 调用 Swift 中定义的 NSString 扩展

无法从 swift 控制器代码访问 Objective C 类