, id
döndüren bir yöntem dolaylı bu new
veya alloc
veya retain
, autorelease
, init
veya self
ile başlayan bir örnek yöntemi ile başlayan bir sınıf metodu olduğunda instancetype
geri bilinmektedir.Atama/yeni/init yöntemlerinde instancetype kullanılmalı mıdır? <a href="http://clang.llvm.org/docs/LanguageExtensions.html#objective-c-features" rel="noreferrer" title="clang documentation">clang documentation</a> göre
Tutarlılık açısından, instancetype
'u açık bir şekilde yeni bir kod olarak vermek için bu yöntemler de yazılmalıdır?
- (instancetype)init {
self = [super init];
if (self) {
// perform initialization
}
return self;
}
Neden mi, neden olmasın veya herhangi bir gerekçeyle ilgili herhangi bir belge var mı? Bu durumda, derleyiciyle tam olarak aynı şekilde yorumlanmış gibi görünüyor.
Varsayılan, "id" değil, instancetype şeklindedir. Dönen instancetype size daha fazla kontrol sağlar. Kodunuz doğruysa fark yoktur, ancak kimliği döndürürseniz derleyici hataları özleyebilir. – gnasher729
@ gnasher729 instacetype belgelerine bkz. Llvm (http://clang.llvm.org/docs/LanguageExtensions.html). 'instancetype', belirli yöntemler için otomatik olarak çıkarılır ve sonuç olarak, bu durumlarda' instancetype' varsayılan değerdir. – bbum