Aşağıdaki kod parçası, Apple'ın ObjC çalışma zamanı (libobjc) kaynak kodundan alınmıştır. Bunun tam olarak ne anlama geldiğini merak ediyorum. (Çok google-mümkün değil, üzgünüm)Bu satır içi derleme neden libobjc'de serbest bırakılması, saklanması ve otomatikleştirilmesi çağrılıyor?
// HACK -- the use of these functions must be after the @implementation
id bypass_msgSend_retain(NSObject *obj) asm("-[NSObject retain]");
void bypass_msgSend_release(NSObject *obj) asm("-[NSObject release]");
id bypass_msgSend_autorelease(NSObject *obj) asm("-[NSObject autorelease]");
Güncelleme: İşte
bypass_msgSend_release() yapılan bir çağrı oluşturur şeydir:
movl -4(%ebp), %eax
movl %eax, (%esp)
calll "-[NSObject release]"
olanlar aynı itiraz derleyici'nın arzusunu engelleyecek şekilde, açık korumak ait çağırmaları, serbest bırakılması ve sallanmasını görünmektedir. Neden olduklarına dair bir fikrim yok. –
Bu dosya hangi dosyada? –
http://opensource.apple.com/source/objc4/objc4-532.2/runtime/NSObject.mm –