2016-04-21 5 views
-1

Das mag eine dumme Frage sein, aber ich habe eine Klasse, die ich in swift umgeschrieben habe, die ich versuche, einen Zeiger in einer objektiven c-Klasse zuzuweisen. Das ist möglich, richtig?Kann Objektiver c-Zeiger verwendet werden, um auf schnelle Objektinstanz zu zeigen

Der Grund, warum ich die andere Klasse noch nicht konvertiert habe, ist, dass ich versuche, die Umrechnung der Klassen zu absolvieren.

+0

Es ist nicht klar, was Sie fragen. Versuchen Sie eine Objective-C-Klasse mit einer Swift-Klasse zu verwenden? Das ist absolut möglich, verwenden Sie einfach einen Bridging-Header. Sie können Swift auch mit einem Objective-C-Objekt verwenden. – JAL

+0

Es war eine objektive C-Klasse mit einer schnellen Klasse. Ich habe meine Frage angepasst, um meine Frage besser zu beschreiben. – Chris

+0

Sie können eine Swift-Klasse von Objective-C nur verwenden, wenn sie mit dem Attribut '@ objc' markiert ist oder von einer Objective-C-Klasse erbt. – Avi

Antwort

0

Sehen Sie hier:

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/

Besonders in diesem Abschnitt:

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-ID122

Hier ist ein kurzes Beispiel:

// A Swift class to be used in Objective C 
// Note: it must inherit from NSObject, whether directly or not! 
class SwiftClass : NSObject 
{ 
    var i : Int32 = 333; 

    // This function will be called from Objective C and passed a pointer to a 
    // SwiftClass instance allocated in Objective C. 
    static func printSwiftClass(sc : SwiftClass) 
    { 
     print("The value of property i is \(sc.i)") 
    } 
} 

// Call an Objective-C function that will use a pointer to SwiftClass 
ClassObjC.staticFun() 

// This goes into the bridging header, directly or indirectly. 
// Needed to let Swift know about the ClassObjC class and its 
// interface 
@interface ClassObjC : NSObject 

+(void)staticFun; 

@end 

Und hier ist die Umsetzung unserer Objecti ve-C-Klasse:

// This header is auto-generated by Xcode and has Swift definitions 
// for use in Objective C 
#import "cli_swift-Swift.h" 

@implementation ClassObjC 

+(void)staticFun 
{ 
    // Create a SwiftClass instance 
    SwiftClass *sc = [[SwiftClass alloc] init]; 
    // Set its i property 
    sc.i = 444; 
    // Call a Swift function to print the property i of the SwiftClass 
    // instance we just created 
    [SwiftClass printSwiftClass:sc]; 
} 

@end 
Verwandte Themen