Я новичок в Objective C. Я вижу во многих приложениях iPhone/iPad, что после выпуска объекта он будет установлен на ноль.Должен ли освободить объект и установить его на ноль атомарным?
[self.obj release]
self.obj = nil;
Я предполагаю, что это сделано, чтобы не оставить указатель ссылкой на место памяти, которое теперь освобождено. Теперь предположим следующую ситуацию:
//Thread #1 code
..some code
..some code
[self.obj release]
-------> Thread #2 runs //Thread #2 code
..some code
if (self.obj){
some code
}
self.obj = nil; <----- Thread #1 runs
Мне было интересно, возможна ли эта ситуация? И если это так, есть ли способ сделать релиз/ноль атомарным?
Спасибо человеку. Делает смысл –
Это верно, если неатомный атрибут не установлен в свойстве obj. http://developer.apple.com/library/mac/# documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html – Joel
Да, я понимаю. Посмотрите ниже на мой комментарий @DBD. Я сделал свойства не атомными. Спасибо tho :) –