본문 바로가기

개발/Objective-C

[Objective-C] Swift와 비교 (1) - 함수, 타입 선언 편

반응형

Objective-C를 알기 위해 Swift를 Objective-C로 Convert 하기.. 🙃

함수 호출 방식

/* Swift */
func printColor() { }
func getColor() -> Color { }
func setNewColor(name: String, code: Int) { }


/* Objective - C */
- (void)  printColor { }
- (Color) getColor { }
- (void)  setNewColor:(NSString *)name, setNewCode:(NSNumber) code { }

 

타입 호출 방식

1. Struct

/* Swift */
struct Color {
    let name : String
    var code : Int
}

let color = Color(name: "Orange", code: "0xed872d")


/* Objective-C */
struct Color {
    NSString *name;
    NSNumber *code;
} Color;

struct Color color;
color.name = "Orange";
color.code = "0xed872d";

 

2. Class

/* Swift */
import Foundation

class Food {
    let name : String
    var type : FoodType
    var cost : Int
    
    init(name:String, type: FoodType, cost: Int) {
        self.name = name
        self.type = type
        self.cost = cost
    }
    
    static func printMethod() { }
}

let food = Food(name: "찜닭", type: .korean, cost: 10000)


/* Objective - C */
/// Food.h file
@import Foundation

@interface Food : NSObject {		
    NSString *name;
    FoodType *type;
    NSNumber *cost;
}
+ (void) printMethod;
- (void) getFood;
- (void) setFood: (NSString*)name foodType: (FoodType)type foodCost: (NSNumber*)cost;
@end


/// Food.m file
@interface Food() 

@end

@implementation Food			
+ (void) printMethod { };
- (void) getFood { };
- (void) setFood:(NSString *) name foodType:(FoodType) type foodCost:(NSNumber *) cost {
    name = name;
    type = &type;
    code = cost;
};
@end

Food *food = [[Food alloc] init];
// or
Food *food = [Food new];

 

3. Enum

/* Swift */
enum FoodType : String {
    case korean = "한식"
    case italian = "양식"
    case chinese = "중식"
}

let koreanFood = Foodtype.korean

/* Objective - C */
typedef enum {		// 기본 : NSInteger
    korean = 0,
    italian = 1,
    chinese = 2
} FoodType;
// or
typedef NS_ENUM(NSInteger, Foodtype) {
    korean,
    italian,
    chinese
} Foodtype;

Foodtype koreanFood = korean;
반응형