어딘가에 내 코드에서 기본 창에서 여러 개의 창을 만들어야합니다. 각각의 창은 특정 구성으로 작동하지만 동일한 컨트롤러 개체의 모든 인스턴스로 작동합니다.사전을 이용한 메모리 관리/GCC의 오해 가능성?
열려있는 창 목록을 유지해야하기 때문에 창을 열 때마다 해당 인스턴스가 사전에 저장되고 창이 닫히면 주 창에 알림이 전송되어 그 창을 제거합니다 사전에서 특정 창.
컨트롤러 개체의 인스턴스를 만든 다음 [showWindow : self]를 호출하여 창을 만듭니다. 그런 다음 사전에 창을 저장하고 메서드를 종료합니다.
제 문제는 새로 생성 된 객체를 공개하거나 자동 리 레이스하지 않기 때문에 윈도우가 사전에서 제거 될 때 수행해야합니다 (맞습니까?). 사전에 객체를 놓았을 때 그 객체를 릴리즈하거나 자동으로 릴리즈하면, 객체를 제거하려고 할 때 모든 종류의 에러가 발생합니다.
1) Xcode에서 인스턴스가 사전에 저장되는 것을 알지 못하는 간단한 버그 일 수 있습니까?
2) 어쨌든 사전에서 참조를 저장하고있는 경우 왜 자동 복구가 내 창을 파괴합니까?
CHPostgreSQLMainController *pgMainController = [[CHPostgreSQLMainController alloc]initWithConnectionSettings:(CHPostgreSQLSettingsModel *)entityFromArray error:&error];
// Only display the window if the connection was successful.
if (pgMainController) {
[pgMainController showWindow:self];
// Register the window we've opened on the list of open windows
[listOpenWindows setObject:pgMainController forKey:[entityFromArray connectionName]];
} else {
//call NSAlert
}
"컨트롤러 개체의 인스턴스를 만들어 창을 만듭니다 ..."이 NSWindowController에 대한 이야기입니까? 그렇다면 무엇을하고 있습니까? –
창을 표시하고 컨트롤러에 대한 참조를 사전에 저장합니다. – ruipacheco