2009-12-31 98 views
0

如何向我的功能發送參數?Obj-C功能參數

- (void)alertURL { 
    NSLog(@"%@",url); 
} 

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 
    alertURL(url); 
    return YES; 
} 

如果有別的錯誤,請告訴我:)

+0

您應該閱讀蘋果免費的Objective-C簡介:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html正如@bbum指出的那樣,並不是功能。 Objective-C確實有功能,因此瞭解其差異很重要。 – 2011-12-06 10:59:48

回答

4

做什麼正確的方法來定義你所謂的功能,這是Obj-C談話中的一種方法,是在圓括號和參數變量名稱中添加冒號和類型。

然後調用該方法,使用方括號。

- (void)alertURL:(NSURL *)url { 
    NSLog(@"%@",url); 
} 

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 
    // Old C function: alertURL(url); 

    [self alertURL:url]; 
    return YES; 
} 

功能仍然支持,他們只是普通的C函數,這意味着他們沒有與任何對象關聯。你想要做的是用方括號向對象發送消息。這是一個Obj-C的東西,你會習慣它。

+0

完美,謝謝! – tarnfeld 2009-12-31 21:38:00

0

就像你會在C.

void alertURL(NSURL* url) { 
    NSLog(@"%@",url); 
} 
4

首先,這不是一個功能,那是一個實例方法。實例方法可以使用參數:

或者,如果你想添加多個:

- (void)alertURL:(NSURL *)url ensureSecure: (BOOL) aFlag 
{ 
    NSLog(@"%@",url); 
    if (aFlag) { ... secure stuff ... } 
} 

其次,你不使用函數調用語法調用一個方法,你通過方法調用它調用語法:

[self alertURL: anURL]; 
[self alertURL: anURL ensureSecure: YES]; 

最後,這個問題表明你還不明白的Objective-C。不用擔心 - 我們都在那裏一次。蘋果提供了一個很好的introduction to Objective-C