Nasıl Objective-C protokolleri özellikleri içerir işlemek için?
Objective-C protokolleri aşağıdaki şekilde kullanılır: kullanımı gördüm
@protocol MyProtocol <NSObject>
@required
@property (readonly) NSString *title;
@optional
- (void) someMethod;
@end
Bu biçimi alt uzanan beton bir sınıf yazmak yerine kullanıldığını gördüm. Soru, Eğer bu protokol için uygundur, özellikler sentezlemek gerekiyor kendini. Eğer bir üst uzanan ediyorsanız, cevap vermek zorunda değilsiniz açıkçası hayır. Ama nasıl bir Protokole uymasını gerektiren özellikleri ile ilgilidir?
Benim anladığım kadarıyla, sen hala bu özellikleri gerektiren bir Protokole uygun bir nesne üstbilgi dosyasında örnek değişkenleri bildirmek gerekir. Bu durumda, sadece temel bir ilke olduğunu kabul edebilir miyiz? Açıkça gerekli bir yöntem için durum böyle değil. Derleyici bir protokol listeleri gerekli bir yöntem hariç bileğine bir tokat gibi vuracak. Özellikleri rağmen arkasındaki hikaye nedir?
Burada bir hata (Not: eldeki sorunun üzerine yansıtmak değil kod) kesilmiş ettim derleme oluşturur bir örnek:
MyProtocol.h
@protocol MyProtocol <NSObject>
@required
@property (nonatomic, retain) id anObject;
@optional
TestProtocolsViewController.h
- (void)iDoCoolStuff;
@end
#import <MyProtocol.h>
@interface TestProtocolsViewController : UIViewController <MyProtocol> {
}
@end
TestProtocolsViewController.m
#import "TestProtocolsViewController.h"
@implementation TestProtocolsViewController
@synthesize anObject; // anObject doesn't exist, even though we conform to MyProtocol.
- (void)dealloc {
[anObject release]; //anObject doesn't exist, even though we conform to MyProtocol.
[super dealloc];
}
@end
CEVAP
Protokol sadece özellik anObject orada olacak bu Protokol ile sınıfı hakkında bilen herkes söylüyor. Protokoller, gerçek değil, onlar hiçbir değişken veya yöntem kendilerini - onlar sadece bir tarif dolayı kümesinin özelliklerinin doğru senin sınıf nesneleri holding referanslar için onları kullanabilir, belirli yollar.
Bu Protokole uygun olarak, her şeyi anObject çalıştığından emin olmak için yapmanız gereken, sınıf demektir.
@property ve @sentez kalbim senin için kodu oluşturmak için iki mekanizma vardır. @özellik sadece o laf özellik adı için (ve/veya ayarlayıcı) alıcı bir yöntem olacak. Bu gün @özellik de, tek başına yöntemleri ve depolama değişken sistem (@sythesize eklemek için kullanılır) tarafından yaratılmış olması yeterlidir. Ama bir şey ve değişken erişim saklamak zorunda.
Nasıl Objective-C özellikleri blokları...
Nasıl verimli bir şekilde anahtarları/...
Nasıl ilerleme iletişim ve arka plan i...
Nasıl gıt sayısı işlemek için?...
Nasıl düğmeye tıklama Parçaları içinde...