So I thought I had all these questions all figured out. Then all of a sudden i get an error (a crash) i can't figure out. THen after doing research to remedy the crash, i notice everything that I thought i knew about these critical areas are somewhat wrong.
Below are 8 questions im just going to shoot out there in hopes of somebody answering - the answers to these will greatly help me get my understanding back on track. Thanks ahead of time!
Q1) Is it okay to call Release on an object if that reference is nil? This should be harmless, right?
Q2) Is it okay to call Release on an object if that reference has been released and as a reference count of 0?
Q3) Is it necessary to set a reference to nil AFTER releasing it? What happens if you dont set it to nil?
Q4) Is there really a difference between nil and NULL, or is it just a semantic thing to help the reader/developer know the object type just by glancing at it?
Q5) Using properties REQUIRE the use of the 'Self' pointer?
Q6) Using instance variables requires that the 'Self' pointer is NOT used?
Q7) When would i ever want to use an instance variable instead of its property? I'd imagine value type data members are okay since their is not releasing and retaining involved.
Q8) Is it necessary to call an object's dealloc from within the dealloc function? In many examples i've seen Release being called, but not Dealloc - are such tutorials incorrect?