tôi đi qua như sau:Loại đối tượng nào @ [obj1, obj2] tạo?
NSArray *array = @[object1, object2];
Nó dường như được tạo ra một NSArray
, nhưng là dụ mảng này một đối tượng autoreleased, hoặc tôi phải phát hành nó?
tôi đi qua như sau:Loại đối tượng nào @ [obj1, obj2] tạo?
NSArray *array = @[object1, object2];
Nó dường như được tạo ra một NSArray
, nhưng là dụ mảng này một đối tượng autoreleased, hoặc tôi phải phát hành nó?
Đây là một bộ sưu tập mới theo nghĩa đen có sẵn trong trình biên dịch mà tàu với xcode 4.4 trở lên
@[object1, object2];
được tương đương với
[NSArray arrayWithObjects:object1, object2, nil];
nên có, nó là một đối tượng autoreleased, nếu bạn cần điều này để được giữ lại, bạn có thể làm
myRetainedArray = [@[object1, object2] retain];
this question có một lần mô tả od của tất cả các chữ mới
Đó là chữ cái của trình biên dịch llvm mới để tạo mảng. Trình biên dịch thay đổi điều này thành:
NSArray *array = [NSArray arrayWithObjects: object1,object2,nil];
Vì vậy, nó sẽ trả về một đối tượng tự động.
tìm kiếmMột Google lớn lên biết thêm thông tin:
"Trình biên dịch thay đổi điều này thành:" Không, nó thay đổi nó để sử dụng 'mảngWithObjects: count:'. – user102008
Và người đàn ông không phải là nó tuyệt vời! cần một số màu tím trong mã của tôi lol –
nếu tôi cần phải tạo ra một đối tượng không autorelease, không thể sử dụng trên chữ? –
bạn vẫn có thể sử dụng nó, chỉ giữ lại mảng sau – wattson12