Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>@selector Problem

@selector Problem

Slartibartfast11.09.1209:44
Ich bekomme in Xcode bei folgendem Code die Warnung "PerformSelector may cause a leak because its selector is unknown". Der Code funktioniert aber einwandfrei.
Ist zwar nur eine Warnung, ich möchte sie aber trotzdem gern weghaben

- (void) fileSaveAsDialog:(SEL)selector
{
NSString *file = @"Untitled.cry";
NSURL *folder = [NSURL fileURLWithPath:defaultFolder];
NSSavePanel *savePanel = [NSSavePanel savePanel];
[savePanel setDirectoryURL:folder];
[savePanel setNameFieldStringValue:file];
[savePanel setCanCreateDirectories:TRUE];
[savePanel setAllowedFileTypes:[NSArray arrayWithObjects:@"cry", nil]];
void (^fileSaveAsDialogHandler)(NSInteger) = ^(NSInteger result)
{
if (result == NSFileHandlingPanelOKButton)
{
// retrieve filename
fileName = [savePanel URL];
[savePanel close];
// encrypt and save
BOOL result = [self saveFile:fileName];
if ((selector != nil) && result) [self performSelector: selector]; // WARNUNG !!!!
};
};
[savePanel beginSheetModalForWindow:window completionHandler:fileSaveAsDialogHandler];
}


Aufruf obiger Methode:
[self fileSaveAsDialog:@selector(setNewDocument)];

Ziel-Methode:
- (void) setNewDocument
{
[window setDocumentEdited:NO];
[textView setString:@""];
[textView setNeedsDisplay:(YES)];
fileName = nil;
NSLog(@"New document");
}
0

Kommentare

PaulMuadDib11.09.1210:26
Ich würde sagen, daß liegt am Block-Statement. Was soll das an dieser Stelle machen? Bin leider schon zu lange raus, um das jetzt genau wissen. Früher(tm) hat man das jedenfalls nicht so gemacht.
0
Urkman11.09.1210:43
Top Find by google:
0
Slartibartfast11.09.1211:06
@PaulMuadDib
Block = Eventhandler für NSSavePanel

@Urkman
Danke, genau das habe ich gesucht!
0
void
void11.09.1218:45
Wenn du die Warnung weg haben willst, übergib eine NSInvocation. Ist allerdings mehr Aufwand.
„Developer of the Day 11. Februar 2013“
0
Slartibartfast12.09.1209:13
@void: Danke, hab ich letztendlich auch so gemacht.
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.