Пожалуйста, не используйте двойные указатели здесь.Вы не должны обращаться с такими вещами.Это более простой подход:
В экземпляре ClassA
:
-(void)passAParameter{
NSString *name = @"Cyprian";
ClassB *classB = [[ClassB alloc] initWithAPointer:name];
...
}
Пока вы определяете ClassB
следующим образом: ClassB.h:
@interface ClassB{
NSString *nameFromClassA;
}
@property(nonatomic,retain) NSString *nameFromClassA; // Retaining it will give you less headaches
-(id)initWithAPointer:(NSString *)name;
@end
ClassB.m:
@implementation ClassB
@synthesize nameFromClassA;
// You should release all retained object when deallocating self
- (void) dealloc {
[nameFromClassA release];
nameFromClassA = nil;
[super dealloc];
}
-(id)initWithAPointer:(NSString *)name{
if ((self = [super init])) { // Always init the object from super!
self.nameFromClassA = name; // Retain the object calling self.
}
return self;
}
//Print the name
-(void)printName{
NSLog(@"Name: %@", nameFromClassA);
}
//Will this change the name in class A?
-(void)changeNameInClassA:(NSString* newName){
self.nameFromClassA = newName; // Retain it calling self.
}
@end