Pointers in Objective-C
I'm just now teaching myself how to code in Objective-C (however, I have no background in C or any other extension), and I'm having some trouble understanding pointers. While reading around, I noticed a lot of people explaining that all objects are just pointers referencing objects. If this is true, then why do I ever have to explicitly create pointers? What is the difference between the follow two statements?
int numberOne = 12;
int *numberTwo = 14;
From what I remember from Java, it would follow that I could do numberOne = numberTwo, and therefore both are equal to 14. I can, however, still change either number individually. i.e. numberTwo = 17 (and therefor numberOne = 14 and numberTwo = 17). Of course, if I were to do the opposite, then the pointer numberTwo would point to the same object as numberOne, and every time I changed one of them, "both" would change.
But if all variables are actually just pointers, then aren't these two phrases exactly the same?
numberOne = numberTwo;
numberTwo = numberOne;
I have about five ebooks on Cocoa or Objective-C, and I'm only three chapters into my first book, so if any of you can reference a book or website for me to check out, or just shed some light on my problem with understanding, that would be faaantastic.
In the realm of C, you would use pointers to pass it's reference to a function as opposed to the value itself..
Your example above, (although buggy) is how you'd do it in C. The problem is that numberTwo has no "storage" that it's pointing to, so when you assign 14 to it, that becomes the "storage" and later one if you try to de-reference the pointer, the program will crash.
Within Objective-C, you still use pointers and you have to to be able to send messages to the class object..
Pointers are very useful constructs..so much so that certain languages make EVERYTHING a pointer (visibly or not)..but there're also a lot of easy pitfalls to get into..
I don't know objective-c, i aim to learn though. In C however a good example of the use of pointers is a function that swaps two values. eg
This will not work. The values are copied into the swap() function and swapped within the scope of the function, but not externaly to it. However, if we pass in pointers to the original variables we can indirectly access them and the swap will occure on the original values.
I hope this helps!
|All times are GMT -4. The time now is 10:21 PM.|
Powered by vBulletin
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.