سؤال

وشيء واحد أنا قليلا واضح على الفرق بين هذه الطرق NSMutableArray:

// Class Method Style

NSMutableData *myMutableDataInstance = [NSMutableData dataWithLength:WholeLottaData];

و

// Instance Method Style

NSMutableData *myMutableDataInstance = nil;

myMutableDataInstance = [[[NSMutableData alloc] initWithLength:WholeLottaData]] autorelease];

وتحت غطاء محرك السيارة، ما eactly هو أسلوب فئة تفعل هنا؟ كيف تختلف من أسلوب مثيل؟

وابتهاج، دوغ

هل كانت مفيدة؟

المحلول

ووأسلوب فئة يخلق وautoreleases كائن NSMutableArray.

وأسلوب المثال initialzes كائن أن لديك لتخصيص بنفسك. سوف رمز كنت قد كتبت في الواقع لا تفعل أي شيء، لأن myMutableArrayInstance هو nil. وأسلوب فئة ما يعادل تقريبا لهذه:

NSMutableArray *myMutableArrayInstance = [NSMutableArray alloc];
[myMutableArrayInstance initWithCapacity:WholeLottaData];
[myMutableArrayInstance autorelease];

وكما يلاحظ بيتر Hosey في تصريحات، فهذا يعني حقا هذا:

NSMutableArray *myMutableArrayInstance = [[[NSMutableArray alloc]
                                           initWithCapacity:WholeLottaData]
                                           autorelease];

والتي سيكون لها نتائج مختلفة عن ما سبق إذا كانت طريقة initWithCapacity: بإرجاع كائن آخر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top