2010-03-24 38 views
34

Làm thế nào để bạn nhận được kích thước của một NSArray và in nó trong bảng điều khiển bằng cách sử dụng NSLog?Kích thước của một NSArray

+9

http://developer.apple.com/mac/library/ tài liệu/Cocoa/Tham khảo/Nền tảng/Lớp học/NSArray_Class/NSArray.html # // apple_ref/occ/instm/NSAr ray/count – Nippysaurus

Trả lời

67
int size = [array count]; 
NSLog(@"there are %d objects in the array", size); 
+5

Về mặt kỹ thuật, nó phải là 'NSUInteger size = ...', nhưng vẫn là +1. :) –

+1

Bạn sẽ phải truyền nó tới một kiểu được printf hỗ trợ để in nó, vì printf không có định dạng thông số cho NS [U] Integer. – Chuck

+1

@Chọn tài liệu nói để sử dụng '% ld' và'% lu' cho 'NSInteger' và' NSUInteger' tương ứng. http://developer.apple.com/mac/library/documentation/cocoa/conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW5 –

2

Hãy xem bài này cho kích thước mảng câu hỏi của bạn

Length of an Array in Objective C

Sử dụng NSLog ghi vào giao diện điều khiển ...

NSLog(@"The array size is %@", arraySize); 
5

Kích thước có thể được xác định bằng cách gửi 'đếm' đối với cá thể NSArray và in tới bàn điều khiển có thể được thực hiện qua NSLog(), ví dụ:

NSArray * array = [NSArray arrayWithObjects:@"one", @"two", @"three", nil]; 
NSLog(@"array size is %d", [array count]); 
7

Một câu trả lời cho câu trả lời khác:

Bạn không thể có được kích thước của mảng bằng megabyte, ít nhất là không phải không có làm một số khó khăn, không được hỗ trợ * C voodoo. NSArray là một cụm lớp, có nghĩa là chúng tôi không biết cách nó được triển khai thực hiện nội bộ. Thực tế, việc triển khai được sử dụng có thể change depending on how many items are in the array. Hơn nữa, kích thước của mảng được tách rời khỏi kích thước của các đối tượng mảng tham chiếu, vì các đối tượng đó sống ở nơi khác trên heap. Ngay cả cấu trúc giữ con trỏ đối tượng không phải là "phần" về mặt kỹ thuật của mảng, vì nó không nhất thiết phải là calloc 'd ngay bên cạnh số thực tế NSArray trên heap.

Nếu bạn muốn kích thước của mảng struct chính nó, cũng đó là dường như chỉ 4 byte:

NSLog(@"Size: %d", sizeof(NSArray)); 

Prints:

2010-03-24 20:08:33.334 EmptyFoundation[90062:a0f] Size: 4 

(Cấp, đó không phải là một đại diện đàng hoàng, vì NSArray là có lẽ chỉ là một giao diện trừu tượng cho một loại đối tượng khác, thường là một cái gì đó giống như một NSCFArray. Nếu bạn nhìn vào NSArray.h, bạn sẽ thấy rằng một NSArray không có biến thể hiện. ething đó là nghĩa vụ phải giữ các đối tượng khác, eh?)

* Bằng "không được hỗ trợ", tôi có nghĩa là "không được khuyến khích", "đào sâu vào chủ nghĩa thần bí bên trong của nhóm lớp" và "API không có giấy tờ và riêng tư, nếu nó còn tồn tại"

0

Trong Swift 4

hãy a = [ "a", "b"]

a.count // 2

Các vấn đề liên quan