죄송합니다. 조금 길지만 가능한 한 설명이 잘되고 싶습니다. 여러 클래스와 2 개의 nib 파일로 테스트 응용 프로그램을 만들고 있습니다 (각 클래스는 하나의 펜촉의 소유자입니다). nib 파일 중 하나에는 텍스트 필드가 있고 다른 하나에는 버튼이 있습니다. 다른 펜촉보기의 단추를 눌렀을 때 텍스트 필드 안에있는 내용을 기록하려하지만 null을 반환합니다. 클래스 (ViewClass) 중 하나에서 나는이 있습니다 :null을 반환하는 코코아 텍스트 필드
- (IBAction)startAction:(id)sender {
MyClass *anInstance = [[MyClass alloc] init];
NSString *string= [anInstance name];
NSLog(@"startAction logged: %@", string);
"이름"은 MyClass의 속성입니다.
- (id)init {
if (self = [super init]) {
[self setName:[nameInput stringValue]];
NSLog(@"init value: %@", name);
}
return self;
는 "NameInput"는 텍스트 필드입니다 : 내가 뭘 원하는 anInstance가 초기화 될 때 MyClass의 초기화 방법은이 작업을 수행 MyClass에, 그런 식의 초기화 설정 "이름"을 가지고 있습니다. 이 생각하면이 텍스트 필드에 있던 것은 무엇이든 반환하지만 대신 null이 나타납니다. setName:@"text"
을 사용하면 잘 전달되기 때문에 텍스트 필드에 문제가있는 것입니다.
이전에 내 자신의 getter에서이 작업을 수행했는데이 경우 메서드가 자신의 클래스에서 호출되었을 때 null을 반환하지 않았지만 초기화되고 다른 클래스에서 호출 된 경우 null을 반환했습니다. 그것은 말하는 유지하는 것이,
- (NSString *)name {
NSLog(@"nameMethod = %@", [nameInput stringValue]);
return [[[nameInput stringValue] retain] autorelease];
이 방법, 나는 모든 올바르게 설정을 말할 수 있지만, 일이 일어나고 나는 ViewClass에서 MyClass의 init을 할 때, 그리고 "이름"을 얻으려고 : 나는이 사용 텍스트 필드는 null입니다.
단추가있는 펜촉이 MyView (NSViewController의 하위 클래스)에 속해 있고 텍스트 필드가 MyClass (NSObject의 하위 클래스)에 속해 있는지 확인하는 것은 확실하지 않습니다.
누군가 필드가 올바르게 연결되지 않았다고 제안했지만, 사실이라면 자신의 클래스에서 호출 할 때 작동하지 않았을 것입니다. 다른 누군가가 텍스트 필드가 nil로 초기화되는 문제가있을 수 있다고 언급 했으므로 위의 init 작업을 시도했습니다. 어느 쪽도 지금까지 일하지 않았다.
도움 주셔서 감사합니다.
init에서 awakeFromNib로 옮겨서 이제는 나 자신의 getter 메소드가 필요하지 않습니다. 하지만이 STILL은 ViewClass에서 사용될 때만 작동합니다. * anInstance = (...); [인스턴스 awakeFromNib]; 다른 클래스에서 호출 할 때 여전히 null을 반환합니다. 실제 문제는 ViewClass가 MyCLass에 텍스트 필드의 이름 문자열을 반환하도록 지시하는 것입니다. 하지만 도움 덕분에 @ 척. – Elbimio
당신이 의미하는 바를 이해하는 것 같아요. * anInstance를 여러 번 추가하는 대신 여러 개의 독립적 인 객체를 만들려고합니다. 동일한 펜촉을 모두로드하려고합니다. – Elbimio
@Elbimio : 아니요, 모든로드를 원하지 않습니다. 또 다시 펜촉로. 이것은 펜촉의 여러 복사본을 인스턴스화합니다.이 복사본은 사용자가 상호 작용하는 것과 다릅니다. 이미 생성 한 참조를 얻고 싶습니다. – Chuck