Mobile Development Swift Subjective
Oct 04, 2025

Explain Swift's interoperability with C and Objective-C.

Detailed Explanation
Swift provides seamless interoperability with C and Objective-C through various mechanisms.\n\n• **C Interoperability:**\n\n// Import C functions\nimport Darwin\n\n// Use C functions directly\nlet result = sqrt(16.0) // C math function\nlet ptr = malloc(1024) // C memory allocation\ndefer { free(ptr) } // Cleanup\n\n// C structs\nvar point = CGPoint(x: 10, y: 20)\nvar rect = CGRect(origin: point, size: CGSize(width: 100, height: 50))\n\n\n• **Objective-C Interoperability:**\n\n// Import Objective-C\nimport Foundation\n\n// Use Objective-C classes\nlet string = NSString(string: "Hello")\nlet array = NSMutableArray()\narray.add("Item")\n\n// Bridging\nlet swiftString: String = string as String\nlet swiftArray: [Any] = array as Array\n\n\n• **Bridging Headers:**\nobjc\n// BridgingHeader.h\n#import "MyObjCClass.h"\n\n@interface MyObjCClass : NSObject\n- (void)doSomething;\n@property (nonatomic, strong) NSString *name;\n@end\n\n\n\n// Swift usage\nlet objcInstance = MyObjCClass()\nobjcInstance.name = "Swift"\nobjcInstance.doSomething()\n\n\n• **Type Bridging:**\n\n// Automatic bridging\nlet nsString: NSString = "Swift String" // String → NSString\nlet swiftString: String = nsString as String // NSString → String\n\n// Collection bridging\nlet nsArray: NSArray = [1, 2, 3] // Array → NSArray\nlet swiftArray: [Int] = nsArray as! [Int] // NSArray → Array\n\n\n• **Memory Management:**\n\n// ARC works with Objective-C\nclass SwiftClass { \n @ func callableFromObjC() {}\n}\n\n// Toll-free bridging\nlet cfString: CFString = "Hello" as CFString\nlet nsString: NSString = cfString // Toll-free bridged\n\n\n• **Performance Considerations:**\n• Bridging has overhead\n• Prefer native Swift types\n• Use @objc judiciously\n• Consider Core Foundation for performance-critical code
Discussion (0)

No comments yet. Be the first to share your thoughts!

Share Your Thoughts
Feedback