2016 yılı itibarı ile Apple docs eski ve çalışmıyor. Örneğin, "sakla" dır, fakat XCode 7.1'de varsayılan ayar ARC'yi kullanmaktır ve "koruma" özelliğini desteklemez. İnternette çeşitli örnekler denedim ve hiç işe yaramadı. Bir istemci uygulamasının bir sunucu uygulamasında sınıf yöntemlerini (özellikle bir LaunchDaemon'da oluşturulmuş, ama gerektirmeyen gibi) çağırabileceği OSX'te Dağıtılmış Nesneler adlı IPC mekanizmasını nasıl kodlarım?Amaç C ile OSX'te Dağıtılmış Nesneler Nasıl Yapılır?
cevap
Gitmenizi sağlayan bir kod örneği. Server.mm projesi muhtemelen en iyi şekilde LaunchDaemon'a yükler. Ben root kullanıcısı olarak çalışan daemon ile bazı testler yaptım ve "mike" olarak çalışan istemci uygulaması, "root" olarak daemonda kod çalıştı. Böylece, ayrıcalık yükselmesini sağlar. Bu IPC'nin herhangi bir protokol şifrelemesi veya kimlik doğrulama sorunu sunmadığını unutmayın, bu yüzden bunu kendiniz eklemeniz yeterlidir. AES256 + Base64 kodlaması ile şifrelenmiş bir anahtar/liste, XML veya JSON mesajıyla, hem gönderme hem de alma konusunda uzun, zor bir şifre deyimiyle büyük olasılıkla uzaklaşabilirsiniz. Unutmayın, ayrıcalık yükselmesiyle, bazı koruma mekanizmalarını yerleştirmeniz çok önemlidir.
Sunucuyu önce başlatın ve orada oturup bağlantılarda bekler. Bir sonraki müşteriyi başlatın ve bir bağlantı kuracak, bir örnek sınıf yöntemine veri aktaracak, bir mesaj bekleyip geri alacak, sonra görüntüleyip kapatacak. Sunucu ayrıca bir geri bildirim gönderilmeden önce bağlantının yapıldığını ve sunucuda ne alındığını da gösterecektir.
Bunun eşzamanlı bir örnek olduğunu, yani sınıf yöntemini çağırdığınızı ve yanıt beklediğini unutmayın. Eşzamansız olmasını istiyorsanız, oneway
keyword'daki Apple belgelerini okumalısınız. Sınıf yöntem beyanında istemciye ve sunucuya koydu. Sadece oneway
anahtar kelimesinin, yalnızca bir asenkron sınıf yöntemine yanıt alamadığınız için geçersiz bir şekilde döndüren bir sınıf yöntemiyle kullanıldığını unutmayın. Bu nedenle, bir görevi başlatmak için bir async çağrısı yaparsınız ve daha sonra başlattığınız görevde durum güncellemesi almak için senkronize bir çağrı kullanırsınız. Yani, burada oneway
anahtar kelime olurdu bir sınıf yöntemi tanımlaması örneği var ekledi:
- (oneway void)runTaskAsync:(NSString *)sParam;
Ve şimdi, kod ...
server.m
#import <Foundation/Foundation.h>
#define cat stringByAppendingString
@interface MyService : NSObject {
NSConnection *connection;
}
@end
@implementation MyService
- (NSString *)testResponse:(NSString *)s {
NSLog(@"...connection:%@", s);
s = [s cat:@"-response"];
return s;
}
- (void)runService {
connection = [[NSConnection alloc] init];
[connection setRootObject:self];
[connection registerName:@"com.acme.myservice"];
[[NSRunLoop currentRunLoop] run];
}
@end
int main (int argc, const char *argv[]) {
@autoreleasepool {
NSLog(@"ACME MyService 1.0\n");
MyService *svc = [[MyService alloc] init];
[svc runService];
}
return 0;
}
client.m
#import <Foundation/Foundation.h>
int main (int argc, const char *argv[]) {
@autoreleasepool {
NSLog(@"building proxy object");
id proxy = [NSConnection rootProxyForConnectionWithRegisteredName:@"com.acme.myservice" host:nil];
NSLog(@"calling test response thru proxy object");
NSString *sResult = [proxy testResponse:@"sent"];
NSLog(@"RESULT=%@", sResult);
}
return 0;
}
- 1. Amaç C özel nesneler için% @ override
- 2. Amaç-C'de nasıl başvuru yapılır?
- 3. Amaç C'de çoklu arayüzler nasıl yapılır?
- 4. CPP'nin Amaç C ile Entegrasyonu
- 5. Doğru nesneler nasıl yapılır: TypeScript
- 6. Amaç-C NSString karakter ile döngü içinAtIndex
- 7. Yığında anonim nesneler, C++?
- 8. Amaç-C Sorunları UIWebView ile PDF'ye dönüştürme
- 9. Amaç-C - ENUMTYPE.ENUMVAL
- 10. For ... ifadesi Amaç-C
- 11. Amaç-C Kütüphanesi?
- 12. Amaç C: SHA1
- 13. Amaç-C için Sözleşme ile Tasarım?
- 14. Amaç C @property Yorumlar
- 15. Yöntem içinde oluşturulan nesneler nasıl yapılır?
- 16. Amaç C - UICollectionView
- 17. Amaç-c Öncelik Sırası
- 18. Amaç C - Sayılarla Array
- 19. Amaç C örnekleri aranan
- 20. Amaç C - Subclassing NSArray
- 21. Amaç c boole değerleri
- 22. Amaç C - KeyValuePair sınıfı?
- 23. Referans belirsiz amaç-c
- 24. Amaç-C - Tanımsız semboller
- 25. Amaç C Gözlemleme/Yansıma
- 26. Amaç C. Garip sözdizimi
- 27. Amaç-C enum hatası?
- 28. bir amaç-c projesi
- 29. C++ nesneler örnekleme dizisi
- 30. Görüntü sabitleme kütüphanesi Amaç-C/C/C++?
Bu, C++'ın herhangi bir özelliğini kullanmadığını söyleyebileceğim kadarıyla Objective-C++ olması gerekmez. – tbodt