2012-12-27 22 views
-1

我有4種方法
在甲傳遞一個陣列中的目標C

-(void)Method1 
{ 

} 

類在B類

-(void)Method2 
{ 
    //calling method3 here 
} 
-(void)Method3 
{ 
    //calling method4 here  
} 
-(NsMutablearray*)Method4 
{ 
    return array; 
} 

我打電話從方法1方法2,並且它變爲高達方法4和方法4返回一個nsmutablearray。我怎樣才能得到我的方法1中的數組。

回答

1

你有幾個方法可以做到這一點任務:

第一:需要改變你的方法簽名,並使用如:

-(void)method1{ 
    ClassB *classBObj=[ClassB new]; 
    NSMutableArray *tempArray = [classBObj method2]; 
} 

在ClassB的

-(NSMutableArray *)method2{ 
    return [self method3]; 
} 
-(NSMutableArray *)method3{ 
    return [self method4]; 
} 
-(NSMutableArray *)method4{ 
    ... 
    return array; 
} 

第二:如果你想同一個陣列中方法4在方法1,沒有任何修改,發佈通知,並在ClassA中觀察它。

第三:您可以使用委託,因爲這是1對1,這將比通知更好。第四:如果你不想改變你的方法簽名,創建一個具有NSArray類型屬性的共享類並使用該屬性在方法和類中傳遞你的數組。

+0

其實我的問題是method3是委託方法 - (void)requestFinished:(ASIHTTPRequest *)請求如何根據你的 – vishnu

+0

如何改變返回類型如果它是一個委託...那麼你有其他3種方式......正如你所看到的,我提到了4種方式。 –

+0

@vishnu:upvote yaar :) –

1

你有這樣的方法2。在method4Ary你將返回值

NSMutableArray * method4Ary = [method1_obj Method2] 
+0

注意Method2的返回類型爲'void',所以這不起作用。 – lnafziger

+0

你可以有返回類型的NSMutablearray – thavasidurai

+0

但他不...... – lnafziger

2

改變你的方法,如:

-(void)Method1 
{ 
    NSMutableArray *tempArray = [classbObj method2]; 
} 

在B類

-(NSMutablearray *)Method2 
{ 
    return [self method3]; 
} 
-(NSMutablearray *)Method3 
{ 
    return [self method4]; 
} 
-(NSMutablearray*)Method4 
{ 
    return array; 
} 
+0

在這裏方法3是委託的方法2,所以我coudnt做到 - (void)requestFinished :(ASIHTTPRequest *)請求這是method3我提到 – vishnu

1

剛剛從void改變返回類型爲NsMutablearray