2013-04-03 38 views
0

我有一個關於方法的參數問題,看起來像這樣: - (BOOL)myMethod:(NSObject*)objectInput;Objective-C的方法對象參數

這裏就是我想要在PHP解釋,我怎麼能在Objective-C實現這一點:

<?php 
class MyObject { 
    public function myFunction($inputObject) { 
     return $inputObject->someVariable; 
     // get another member from some object not related 
     // to this object. 
    } 
} 
?> 

我的目的-C標題:(MyObject.h

@interface MyObject : NSObject 

- (BOOL)myMethod:(NSObject*)inputObject; 

@end 

的OBJ-C執行:(MyObject.m

#import <Foundation/Foundation.h> 
#import "MyObject.h" 

@implementation MyObject 

- (BOOL)myObject:(NSObject*)inputObject { 
    return inputObject.boolMember; 
} 

@end 

問題是,Xcode說,當我嘗試在Objective-C中時,沒有這樣的成員存在。另外,我試圖做的是什麼?我仍然對Objective-C和它的所有奇怪都感到陌生。但是有更好的方法嗎?

+1

您更好地通過學習(https://developer.apple.com/library/ios/#referencelibrary/GettingStarted/Learning_Objective-C_A_Primer/),而不是PHP的[關於Objective-C的資源]學習Objective-C。 – vikingosegundo

+0

使用「.propertyName」符號訪問屬性是可能的,只有當你使用@property聲明時,通過我看到你要求一個NSObject實例作爲參數的方式,這並不是真的錯,但如果你想使用屬性,你最好使用你正在嘗試使用的對象的真實類(以避免編譯警告) –

回答

0

您正在嘗試從NSObject*中獲取一個名爲boolMember的東西,該東西沒有一個名爲that的方法或變量。您或者需要傳遞一個更具體的對象,肯定確實有一個boolMember,或者使用自省/反射來確定對象是否具有boolMember

我更熟悉在Java中使用反射,但從我能找到的我想你會想要在Apple's Objective-C Runtime reference中找到的方法。如果你特別想要一個變量,你應該可以用class_getProperty方法得到它。

+0

我想說的是,當方法是_called_然後返回該成員的值。 – NONE

+0

我想我明白了。所以你已經得到了A類的對象,並且你想要建立一個方法,給定一個類B的對象,將從B中檢索一些變量? –

+0

是的,正是我想要做的。 – NONE

1

您正在引用NSObject上不存在的屬性。你需要創建你自己的NSObject子類並添加一個屬性。

@property (nonatomic, assign) BOOL boolMember 
相關問題