الهدف جيم صفائف البدائية
-
20-09-2019 - |
سؤال
وأريد أن يكون مجموعة قابلة للتغيير مع الأوليات في الكائنات ج (محددات). ما هي الطريقة الموصى بها للقيام بذلك؟ NSArray
وتلك يمكن أن تعقد فقط الكائنات.
المحلول
ويجب أن يستخدم NSValue
إلى التفاف محدد أو أي نوع بدائي الأخرى التي تحتاج إليها. في الكاكاو SEL هو نوع من المؤشر، بحيث يمكنك استخدام [NSValue valueWithPointer:whatever]
لبناء عليه و[value pointerValue]
ليخرجه. أو، بشكل عام يمكنك استخدام [NSValue valueWithBytes:&whatever objCType:@encode(SEL)]
. هذا يعمل من أجل أي نوع.
نصائح أخرى
إذا كنت تريد تخزين صفيف من الكائنات SEL
، وأسهل شيء أن يكون لتحويل SEL
s إلى NSString
s باستخدام وظيفة NSStringFromSelector()
، وتخزينها في NSMutableArray
، ومن ثم تحويلها إلى SEL
s عند سحبها باستخدام NSSelectorFromString()
وظيفة.
وآخرون من إدارة مجموعة على غرار C نفسك (والتي هي بالتأكيد ليست الخيار الأفضل، IMO)، والخيار الوحيد هو استخدام NSArray
/ NSMutableArray
، وتخزين أرقام باستخدام NSNumber
. انها قليلا أكثر مزعج للحصول على قيمة خارج من مع نوع عددي الفعلي، ولكنه مجانا لكم من إدارة ذاكرة مجموعة من نفسك.
ومنذ أنواع بدائية عموما مجرد أرقام (سواء كانت صحيحة أو الفاصلة العائمة) أو مؤشرات، ما هي المشكلة مع استخدام الفئات المستخدمة للالتفاف تلك التي تصل لأغراضك؟ وNSMutableArray
من NSNumbers
، على سبيل المثال؟