2009-04-26 13 views
0

Gibt es eine Möglichkeit, ein Float "byref" an eine Methode in Ziel C zu übergeben? Hier ist ein Überblick von dem, was ich habe:Float "byref" in Ziel C übergeben?

Methodensignatur:

- (void) MyMethod: (float*) min max:(float*) max; 

Methode:

- (void) MyMethod: (float*) min max:(float*) max 
{ 
} 

versucht es aufzurufen:

float min1 = 0; float max1 = 0; 
[self MyMethod: min:&min1 max:&max1]; 

ich die folgende Warnung erhalten , und der Code wird abgebrochen, wenn versucht wird, MyMethod aufzurufen:

Warnung: 'MyClass' reagieren möglicherweise nicht auf '+ MyMethod: min: max:'

Antwort

3

Die Signatur für Ihre Methode als

- (void) MyMethod: (float*) min max:(float*) max 

deklariert, aber Sie es als

- MyMethod:min:max: 
fordern

... was ein zusätzliches 'min:' enthält, das nicht in der Deklaration enthalten ist.

Versuchen Sie, Ihre Telefonvorwahl zu

float min1 = 0; float max1 = 0; 
[self MyMethod:&min1 max:&max1]; 

verändern und sehen, ob die Dinge verbessert.

Allerdings sehe ich, dass Ihre Fehlermeldung über die Unterschrift klagt ‚+ MyMethod: min: max:‘, die auch schon sagt Sie versuchen, die Nachricht an die Klasse statt einer Instanz von der schicken Klasse; Sie müssen das korrigieren.

Schließlich beginnen Methodenauswahl in Objective-C-Code in der Regel mit einem Kleinbuchstaben; Vielleicht möchten Sie auf Common Objective-C naming conventions nachlesen.

+0

Problem gelöst. Das extra "Min" Ding war ein Tippfehler, als ich die Fehlermeldung erneut eintippte. Das Problem war tatsächlich (wie Sie darauf hingewiesen haben), dass ich versuchte, eine Instanzmethode von einer statischen/Klassenmethode aufzurufen. Ich werde die Namenskonventionen lesen. Danke für die Hilfe! – Marty

+0

Apples Namenskonventionen für ihre Cocoa-Framework (s) sind here beschrieben. –

+0

... oder besser, hier: http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html –