【问题标题】:Does doing self = self init; return self; in objective-C have the same effect as self.init() in swift?做 self = self init;回归自我;在objective-C中与swift中的self.init()有相同的效果吗?
【发布时间】:2016-08-04 17:23:45
【问题描述】:

在做什么:

self = self.init;
return self;

在objective-C中的效果与:

self.init() 

很快?

例如,在这种情况下:

else if([format.dateFormatType compare: ISO8601DateFormatType] == NSOrderedSame) {
        NSString *isoFormat = ISO8601DateFormatType;
        NSString *dateFormat = (isoFormat != nil) ? isoFormat : ISO8601DateFormatType;
        NSDateFormatter *formatter = [DateFormat CustomDateFormat: dateFormat];
        formatter.locale = [NSLocale localeWithLocaleIdentifier: (@"en_US_POSIX")];
        formatter.timeZone = [NSTimeZone localTimeZone];
        formatter.dateFormat = dateFormat;
        NSDate *date = [formatter dateFromString:(string)];
        if (date != nil){
            return [self initWithTimeInterval: 0 sinceDate: date];
        }
        else {
            self = self.init;
            return self;
        }
    }

【问题讨论】:

  • 你想在什么情况下使用这个?
  • 让我编辑我的问题给你看。
  • 其实等价的就是return [self init];
  • 谢谢!将其发布为答案,我确认:)

标签: objective-c swift init


【解决方案1】:

self.init() 在 Objective-C 中调用同一范围内的指定或默认初始化程序的等价物是

if (date != nil) {
   return [self initWithTimeInterval: 0 sinceDate: date];
} else {
   return [self init];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-04
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 2013-11-08
    • 1970-01-01
    相关资源
    最近更新 更多