Tôi là một người mới bắt đầu với iPhone dev trong Objective C và có một điều tôi thấy tôi đang làm khá nhiều càng nổi (và ints) trong và ngoài NSArrays khác nhauCó cách viết tắt để có được một phao từ một mảng?
float myFloatValue = [(NSNumber *)[myArray objectAtIndex:integerSelector] floatValue];
Tôi hiểu rằng tôi cần để làm điều này boxing vì một float (hoặc int) không phải là một con trỏ và NSArray chỉ chấp nhận con trỏ.
Tôi chỉ tự hỏi nếu có một chút đường cú pháp để rút ngắn dòng mã này - chủ yếu là vì khi tôi có một vài mảng và tôi lặp lại chúng để thực hiện một số xử lý, tôi thấy rằng các dòng bắt đầu nhận được lớn và tôi phải phá vỡ các dòng mà trích xuất các mẫu số các mảng chỉ để làm cho mã có thể đọc được - sau đó tôi có rất nhiều dòng gumph có xu hướng làm cho logic khó làm theo.
Trong một ngôn ngữ như C# Tôi sẽ viết một cái gì đó giống như
float myResult = myArray[i] + someOtherArray[i+1];
(ok - đó có thể là một dòng khá ngớ ngẩn của mã - nhưng cú pháp nó khá sạch sẽ, tôi đoán vì .net đang làm boxing ngầm nơi tôi không thể nhìn thấy nó)
trong CI khách quan thấy mình viết:
float myFloatValue = [(NSNumber *)[myArray objectAtIndex:i] floatValue];
float myOtherFloatValue = [(NSNumber *)[someOtherArray objectAtIndex:i+1] floatValue];
float myResult = myFloatValue + myOtherFloatValue;
tôi chỉ tự hỏi nếu tôi bỏ lỡ một trick ở đây bằng cách gõ nó tất cả ra longhand. Tôi có nên sử dụng một giải pháp thay thế cho NSArray không? Có lối tắt cho boxing/unboxing không?
Hoặc tôi đoán, nên tôi chỉ quen với nó và dừng whinging;)
Không, mục tiêu-C hút. Nhưng bạn có thể sử dụng một mảng C nếu bạn chỉ lưu trữ phao. Vấn đề với mảng C là phân bổ bộ nhớ động. – vakio
Vâng, ít nhất, tại sao bạn lại đúc? Đây không phải là C++. Bạn có thể gửi bất kỳ thông điệp nào bạn muốn cho một đối tượng 'id'. – StilesCrisis