【问题标题】:Objective - C -> Swift [closed]目标-C-> Swift [关闭]
【发布时间】:2016-05-22 15:01:40
【问题描述】:

请帮助我是 swift 的新手,我无法将代码从 obj-c “翻译”为 swift。请提供一些文献或任何帮助。或任何与 swift 中的 INSTANCETYPE 的类比

@implementation Message

+ (instancetype)messageWithString:(NSString *)message
{
    return [Message messageWithString:message image:nil];
}

+ (instancetype)messageWithString:(NSString *)message image:(UIImage *)image
{
    return [[Message alloc] initWithString:message image:image];
}

- (instancetype)initWithString:(NSString *)message
{
    return [self initWithString:message image:nil];
}

- (instancetype)initWithString:(NSString *)message image:(UIImage *)image
{
    self = [super init];
    if(self)
    {
        _message = message;
        _avatar = image;
    }
    return self;

 }
@end

Screen of code

【问题讨论】:

    标签: objective-c swift instancetype


    【解决方案1】:

    Swift 中的约定是您不翻译工厂方法(看看 Apple 如何翻译 NSString)。

    试试这个:

    class Message: NameOfSuperClass {
        var message: String
        var image: UIImage?
    
        init(message: String, image: UIImage? = nil) {
            self.message = message
            self.image = image
            super.init()
        }
    }
    

    用法:

    let a = Message(message: "Hello world")
    let b = Message(message: "Goodbye world", image: anImage) // Assume anImage is defined
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多