Tôi đang thử tay mình tại khóa học iPhone từ Stanford trên iTunes U và tôi hơi bối rối về con trỏ. Trong nhiệm vụ đầu tiên, tôi đã cố gắng làm một cái gì đó như thế nàyTại sao tôi không khai báo NSInteger với số *
NSString *processName = [[NSProcessInfo processInfo] processName];
NSInteger *processID = [[NSProcessInfo processInfo] processIdentifier];
nào tạo ra một lỗi, sau tinkeing xung quanh một cách mù quáng, tôi phát hiện ra rằng đó là * trong dòng NSInteger đã gây ra vấn đề.
Vì vậy, tôi rõ ràng là không hiểu điều gì đang xảy ra. Tôi sẽ giải thích làm thế nào tôi nghĩ rằng nó hoạt động và có lẽ ai đó sẽ được loại, đủ để chỉ ra lỗ hổng.
Không giống như trong quá trình phát triển web, bây giờ tôi cần để lo lắng về bộ nhớ, tốt hơn nhiều so với phát triển web. Vì vậy, khi tôi tạo một biến, nó được phân bổ một bit của bộ nhớ ở đâu đó (RAM I giả định). Thay vì chuyển biến số xung quanh, tôi chuyển một con trỏ tới bit đó của bộ nhớ xung quanh. Và con trỏ được khai báo bằng cách đặt trước tên biến số với *.
Giả sử tôi đúng, câu hỏi của tôi là lý do tại sao tôi không cần phải làm điều đó cho NSInteger?
Tôi nghi ngờ đó sẽ là một mẹo rất tiện dụng. Cảm ơn. – gargantuan
Đó là một bản ghi nhớ lớn đối với tôi khi tôi chuyển từ phát triển webdev sang iPhone. Một trong những khác để xem ra cho là chắc chắn để chấm dứt NSArray với nil. –
Nếu bạn nhấn đúp chuột vào NSInteger hoặc các loại khác bạn đang nhầm lẫn trong XCode, bạn có thể được đưa đến định nghĩa của nó, trong trường hợp này sẽ là: typedef int NSInteger; Vì vậy, đó là một int cũ đơn giản sau khi tất cả. –