iTunes U의 Stanford iPhone 과정에서 손을 잡고 있습니다. 포인터에 대해 약간 혼란 스럽습니다. 첫 번째 과제에서, 나는 오류가 발생이NSInteger를 *로 선언하지 않는 이유는 무엇입니까?
NSString *processName = [[NSProcessInfo processInfo] processName];
NSInteger *processID = [[NSProcessInfo processInfo] processIdentifier];
같은 일을 시도, 맹목적으로 주위 tinkeing 후, 나는 그것이 문제의 원인이 된 NSInteger 줄에 *는 것을 발견했다.
그래서 나는 분명히 무슨 일이 일어나고 있는지 이해하지 못합니다. 나는 그것이 어떻게 작동한다고 생각하는지 설명 할 것이고 아마도 누군가 그 결함을 지적하기에 충분히 친절 할 것입니다.
웹 개발과 달리 이제는 웹 개발보다 메모리에 대해 걱정할 필요가 있습니다 ( ). 그래서 내가 변수를 만들면 비트의 메모리가 할당됩니다 (RAM I 가정). 변수를 전달하는 대신 주변 메모리의 비트를 포인터로 전달합니다. 포인터는 변수 이름 앞에 *를 붙여 선언됩니다.
내가 맞다고 가정 할 때, 나는 왜 내가 NSInteger를 위해 그것을 할 필요가 없는지 궁금한가요?
매우 유용한 팁이 될 것으로 생각됩니다. 감사. – gargantuan
webdev에서 iPhone 개발로 옮겨 갔을 때 저에게는 큰 장애가되었습니다. 조심해야 할 다른 하나는 NSArray를 nil로 끝내는 것입니다. –
NSInteger 또는 Xcode에서 혼동스러워하는 다른 유형을 Apple- 두 번 클릭하면 다음과 같은 정의로 넘어갈 수 있습니다. typedef int NSInteger; 결국 그것은 평범한 오래된 int입니다. –