2011-04-08 64 views
0

从Java世界到iPhone,我希望看到下面的Java在Objective C中表达。为了清楚起见,我保留了Obj-C类类型。目标C类中的调用方法

NSString myData = "some stuff"; 
NSMutableArray myArray = parseDataIntoAnArray(myData); 
... 
private NSMutableArray parseDataIntoAnArray(NSString aString){ 
    NSMutableArray myArray = new NSMutableArray(); 
    // objects added here to myArray by manipulating aString 
    return myArray; 
} 

感谢, 史蒂夫

回答

0
// All string literals require the "@" symbol at the beginning. 
NSString *myData = @"some stuff"; 
NSMutableArray *myArray = [self parseDataIntoAnArray:myData]; 

-(NSMutableArray*)parseDataIntoAnArray:(NSString*)aString { 
    NSMutableArray *myArray = [NSMutableArray array]; 

    return myArray; 
} 

当然,你可能会想包括方法签名暴露在头文件的方法:

-(NSMutableArray*)parseDataIntoAnArray:(NSString*)aString; 
+0

男人,你很快!有关内存管理的任何提示吗?你能来我家吗,帮我把我的项目搞清楚? :) – steve217 2011-04-08 00:55:22

+0

return myArray; – 2011-04-08 00:57:01

+0

哈哈。我读过的最佳内存管理规则是:“如果你使用'alloc','copy'或'new',内存管理就在你身上。”几乎任何其他对象都是'autorelease'd。 – FreeAsInBeer 2011-04-08 00:57:19

0
NSString * myData = @"some stuff"; 
// assumption is that parseDataInto... is a static method on your Foo class 
NSMutableArray * myArray = [Foo parseDataIntoAnArray: myData]; 

+ (NSMutableArray *) parseDataIntoAnArray: (NSString*) aString 
{ 
    NSMutableArray *myArray = [NSMutableArray array] 
    // stuff here 
    return myArray; 
} 

注意你的方法(如你所定义的)返回NSString*,并将其分配给NSMutableArray*,它们是不兼容的指针类型。我上面的例子,将返回类型切换为NSMutableArray*,这是我认为你的意思。

+0

谢谢,你明白我的意思。修复了原来的帖子。 – steve217 2011-04-08 01:04:49

0

我想你应该先忘记Java或其他编程语言。 然后你可以阅读关于Objective-C和NSString或其他基本类的文档。 只是看看实际工作代码,希望对您有所帮助:

NSString *myData = @"some stuff";//string initializer 
NSMutableArray *myArray = [self parseDataIntoAnArray:myData];//Object-C's message(just like methods or something) 

//instance method, take a parameter named aString 
- (NSMutableArray *)parseDataIntoAnArray:(NSString *)aString{ 
    NSMutableArray *myArray = [NSMutableArray array];//array initializer 

    [myArray addObject:aString];//another Message, add object to the array 

    return myArray;//return the passed array, that's done. 
}