Swift

Swift:イニシャライズ? その2

以前、- (id)initWithPath:(NSString *)pathに対応するものがないと書いたのですが、今、FileNodeでこの問題に直面しています。

その後わかったことは、次の通りです。実際は、allocWithZoneとinitWithPathの2つの解が必要で、まず、initWithPathの方を解決しようとしています。早い話、initとconvenience initがどう違うのか? pathとnodeの違い?

もうひとつは、structを使うこととどう関係があるか?これらの組み合わせを確認したらどうだろうかというところでうろうろしています。

ひとつ疑問なのは、Objective-CはなぜinitWithPath:で返り値があってもOKなのでしょうか。

Objective-C

FileNode *copy = [[FileNode allocWithZone:zone] initWithPath:path];
FileNode *item = [[FileNode alloc] initWithPath:filePath];

候補


+ (instancetype)allocWithZone:(struct _NSZone *)zone

  • class func allocWithZone(_ zone: COpaquePointer) -> Self!

 + (instancetype)alloc

  • class func alloc() ->Self!

 – (id)initWithPath:(NSString *)path

 – (id)initWithPath:(NSString *)node

  • convenience init(path node: String)

 

Categories: Swift, 技術