: Eğer uzatma, mm ile Dosyanızı adlandırma veya, o zaman, C++ 'ile ilgisi aynı şekilde referanslarını geçebilir ++ Objective C gibi tüm kaynak, örneğin derlemek için Xcode anlatarak yapabilirsiniz C++, ettik Ortaya çıkan bir işlev çağrısından birden fazla adres almak istiyorsanız bir argüman var. Bunun yerine bir sarmalayıcı sınıfı oluşturarak ve bunu yerine geçerek yapabilirsiniz.
@interface AddressWrapper : NSObject {
NSArray *array;
NSString *string;
}
@property (nonatomic, assign) NSArray *array;
@property (nonatomic, assign) NSString *string;
@end
* .m olarak: Örneğin:
@implementation AddressWrapper
@synthesize array, string;
@end
-(void) getAddresses: (AddressWrapper*) wrapper {
wrapper.array = myNSArray;
wrapper.string = myNSString;
}
Tamamen katılıyorum! Her zaman C++ anlamında: Referansla geçmek, bir yöntemin (işlev) parametresini başka bir nesneye yönlendirmek için değiştirirseniz, dış dünyanın etkileneceğini (param, iletilen değişkenin yalnızca bir başka adıdır) ve bunun gerçekleştirilemeyeceği anlamına gelir. Nesne C'deki parametrenin kaldırılması olmadan, her zaman işaretçinin ** bir kopyası ** yöntemlere (işlevler) aktarılır. – Vassilis
Objective C'de, bir nesnenin dereferleme işaretçisi çok nadirdir. Bir yöntem parametresinin değerini değiştirmek isterseniz, normal olarak aşağıdaki iki yoldan birini kullanırsınız. Frist, birçok NSError örneğinde olduğu gibi, işaretçiyi göstericilere (çift dolaylı, ** ile gösterilir) kullanır. İkincisi, bir blok olarak sarma yöntemi. Daha sonra, değişkeni blok ile aynı sözcük kapsamına koyun ve '__block' depolama türüyle belirtin. – Philip007