objective


Objective-C atomicity summary

/*
 if the case is safe, any case in subset is also safe
 if the case is unsafe, any case in superset is also unsafe
 */

nonatomicShortStruct
atomicShortStruct

    ivarGetters + propertyGetters + ivarSetters + propertySetters : safe


nonatomicLongStruct
    ivarGetters + propertyGetters : safe
    ivarSetters : wrong data
    propertySetters : wrong data
    ivarSetter + propertySetter : wrong data
    ivarGetter + ivarSetter : wrong data
    ivarGetter + propertySetter : wrong data
    propertyGetter + ivarSetter : wrong data
    propertyGetter + propertySetter : wrong data


atomicLongStruct
    ivarGetters + propertyGetters : safe
    ivarSetters : wrong data
    propertySetters : safe
    ivarSetter + propertySetter : wrong data
    ivarGetter + ivarSetter : wrong data
    ivarGetter + propertySetter : wrong data
    propertyGetter + ivarSetter : wrong data
    propertyGetters + propertySetters : safe


nonatomicStrongObject
nonatomicCopyObject
    ivarGetters + propertyGetters : safe
    ivarSetters : over retain / over release
    propertySetters : over retain / over release
    ivarSetter + propertySetter : over retain / over release
    ivarGetter + ivarSetter : dangling pointer
    ivarGetter + propertySetter : dangling pointer
    propertyGetter + ivarSetter : dangling pointer
    propertyGetter + propertySetter : dangling pointer


atomicStrongObject
atomicCopyObject
    ivarGetters + propertyGetters : safe
    ivarSetters : over retain / over release
    propertySetters : safe
    ivarSetter + propertySetter : over retain / over release
    ivarGetter + ivarSetter : dangling pointer
    ivarGetter + propertySetter : dangling pointer
    propertyGetter + ivarSetter : dangling pointer
    propertyGetters + propertySetters : safe


nonatomicUnsafeUnretainedObject
atomicUnsafeUnretainedObject
    ivarGetters + propertyGetters + ivarSetters + propertySetters : safe / external dangling pointer
nonatomicWeakObject
atomicWeakObject
    ivarGetters + propertyGetters : safe
    ivarSetters : safe
    propertySetters : safe
    ivarSetter + propertySetter : safe
    ivarGetter + ivarSetter : safe
    ivarGetter + propertySetter : safe
    propertyGetter + ivarSetter : safe
    propertyGetters + propertySetters : safe