Should I refer to self.property in the init method with ARC?

Use direct access in partially constructed states, regardless of ARC: – (id)initWithReminder:(Reminder*)reminder_ { self = [super init]; if (self) { reminder = reminder_; // OR reminder = [reminder_ retain]; } return self; } This is because self.whatever will trigger other side effects, such as Key-Value Observing (KVO) notifications, or maybe your class implements (explicitly) or … Read more

Why isn’t my weak reference cleared right after the strong ones are gone?

From the assembly code it can be seen that accessing weakPtr generates a objc_loadWeak call. According to the Clang documentation, objc_loadWeak retains and autoreleases the object and is equivalent to id objc_loadWeak(id *object) { return objc_autorelease(objc_loadWeakRetained(object)); } This (hopefully) explains why both if(strongPtr == weakPtr) … and NSLog(@”weakPtr: %@”, weakPtr); create additional autoreleased references. This … Read more