LoginSignup
11
12

More than 5 years have passed since last update.

SwiftでreadonlyなプロパティをObjective-C側に公開する

Posted at

Objective-Cの時に、特定のプロパティをreadonlyで公開するというのを結構やっていた。

いきなり全部をSwiftにするのは怖いから徐々に浸食していこうと思っているんだけど、併用している時にはどう書けばいいんだろう?

と思ったのでメモってみた。

よく書くパターン(Objective-C)

Sample.h
#import <Foundation/Foundation.h>

@interface Sample : NSObject

@property (nonatomic, copy, readonly) NSString *item1;

@end
Sample.m
#import "Sample.h"

@interface Sample () 

@property (nonatomic, copy) NSString *item1;

@end

@implementation Sample
@end

Swiftで書くと

Sample.swift
import Foundation

class Sample: NSObject {
  private(set) var item1 = ""
}

ちなみに

Sample.swift
import Foundation

class Sample: NSObject {
  var item1 = ""
  private(set) var item2 = ""
  private var item3 = ""
}

と書くと

PROJECTNAME-Swift.h
@interface Sample : NSObject
@property (nonatomic, copy) NSString * item1;
@property (nonatomic, readonly, copy) NSString * item2;
- (instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

という感じになるらしい。

11
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
12