2011-11-30 45 views
5

Tôi tình cờ gặp những điều sau đây và dường như không thể tìm ra lý do tại sao nó hoạt động. Bạn có thể giải thích tại sao tôi không cần sử dụng con trỏ trước range?Giới thiệu về con trỏ trong Mục tiêu-C

NSString *d = @"The quick brown fox"; 
NSRange range = [d rangeOfString:@"brown"]; 

Trả lời

9

NSString là loại đối tượng. Tất cả các loại đối tượng là con trỏ và không thể được tạo trên ngăn xếp. NSRange là C-struct. Structs có thể được tạo trên stack, và do đó không nhất thiết phải là tất cả các con trỏ.

Không có hướng dẫn hay để biết cái nào là đối tượng và cấu trúc nào là cấu trúc. Bạn sẽ chỉ phải kiểm tra từng loại khi bạn tiến lên phía trước.

+0

+1 Đối với OP: hãy nhớ rằng Objective-C là một tập hợp siêu C, thêm các tính năng OOP. Nhưng ngay cả khi bạn có thể viết mã theo cách OOP, bạn vẫn phải biết (ít nhất) một vài điều cơ bản về C. – Macmade

+0

Một sự hiểu biết vững chắc về heap vs phân bổ stack sẽ rất tiện dụng ở đây. –

+1

Thậm chí không phải là một bản vững chắc ... Chỉ cần một vài điều cơ bản sẽ thực sự hữu ích, IMHO:) – Macmade

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