2009-09-03 18 views
5

Bir applicationDidFinishLaunching: kakao deleğim içine dahil etmek istiyorum. Bunu nasıl yapardım? Iphone SDK'da applicationDidFinishLaunching zaten uygulama temsilcisindedir, ancak mac uygulamamı yaparken hiçbirinin olmadığını fark ettim.Uygulama Delegesi - Kakao

Saygılarımızla,

Kevin

cevap

6
- (id)init 
{ 
    if (self = super init]) { 
     [NSApp setDelegate:self]; 
    } 
    return self; 
} 

Ayrıca Interface Builder yapabilirsiniz; MainMenu.xib'deki "File's Owner" öğesinden, "delegate" çıkışını nesnenize sürüklemeniz yeterlidir. Bunun yerine -awakeFromNib kullanmayı düşünebilirsiniz.

+2

Süper init' 'etrafında köşeli parantez eksik ve yöntem' applicationDidFinishLaunching söz yoktur: 'çalışması için ssame sınıfı tarafından uygulanması gerekir. – MKroehnert

20

Xcode 3.2'den itibaren, Mac uygulama şablonu ayrıca, zaten bağlı olan, böyle bir yöntemi olan bir uygulama temsilcisi ile birlikte gelir.

Bunu, Xcode 3.2'den önce oluşturulan bir projede ayarlamak için temsilci için bir örnek olması için yeni bir sınıf oluşturun. Genellikle benim “AppDelegate” olarak adlandırıyorum. Bunu, Sınıflar grubuna sağ tıklayıp “Dosya Ekle” yi seçerek ve ardından Kakao NSObject Alt Sınıfı dosya şablonunu seçerek yapabilirsiniz.

Az önce oluşturduğunuz başlığı açın (AppDelegate.h). İstediğiniz örnek değişkenlerini verin. Daha sonra Counter partisine git. Bu sizi uygulama dosyasına (AppDelegate.m) götürür. applicationDidFinishLaunching: örnek yöntemini buraya ekleyin. IPhone'dan farklı olarak, bu bir bildirim işleyicisi yöntemidir, bu nedenle bir NSNotification örneğini alır ve bir NSApplication örneğini değil.

Şimdi bağlamak için. Kaynaklar grubunda MainMenu.nib açın. Bir Nesneyi Kütüphane penceresinden en üst düzey uç penceresine (Dosya'nın Sahibi ve İlk Yanıtlayıcı gibi simgeler içeren bir pencereye sürükleyin) sürükleyin. Az önce oluşturduğunuz nesneyi seçin ve Kimlik denetçisini açın. Nesnenin sınıfını, Xcode'da kullandığınız adı eşleştirerek AppDelegate olarak ayarlayın. Dosyanın Sahibine sağ tıklayın ve delegate çıkışından yeni nesnesine sürükleyin.

Xcode'da, applicationDidFinishLaunching: yönteminize bir NSLog ifadesi ekleyin. Tümünü Kaydet, ardından Oluştur ve Devam Et. Xcode'a geri dönün ve Hata Ayıklayıcı Konsolu açın. Eğer her şeyi doğru yaptıysan ve hiçbir şey unutmadıysan, oradaki mesaj mesajını görmelisin.

+0

'Mac uygulama şablonu, zaten bir bağlantıya sahip bir uygulama temsilcisi ile birlikte geliyor, böyle bir yöntem var. 'Belge tabanlı uygulamalar için değil ... – zakdances

+0

@yourfriendzak: Good point. Belge tabanlı bir uygulamaya (herhangi bir nedenden dolayı) bir uygulama temsilcisi eklemek isterseniz, talimatların geri kalanını uygulamanız gerekir. –

0

Uygulama delegesi dosyalarını tamamen kaçırdınız mı? En son proje şablonlarını yanlış klasöre yükleyen Xcode yükleme komut dosyalarında bir hata var (en azından 3.2.1 Snow Leopard'da). Bir "Kakao Uygulaması" projesi için eski şablon, temsilci dosyalarını içermiyor. Fixing the Xcode Project TemplatesFixing the Xcode Project Templates adlı bir blog yayında keşfettiğimi (ve nasıl "sabitlediğimi") açıkladım.

Alkış, Graham