2012-11-14 80 views
0

第一天學習Objective-C但具有Java背景。我想爲我的參數使用相同的變量名,我爲我的實例變量所做的。在Java中,我們做這樣的目標C中的Java關鍵字C

public class Person 
{ 
    private String name; 
    private String age; 

    public void setName(String name) 
    { 
     this.name = name; 
    } 
    public void setAge(String age) 
    { 
     this.age = age; 
    } 
} 

目標C到目前爲止,我有這個

@interface Person : NSObject 
{ 
    int age; 
    int name; 
} 
    -(void) setAge:(int) age; 
    -(void) setName:(int) name; 
    -(int) getAge; 
    -(int) getName; 
@end 

@implementation Person 
-(void) setName:(int) w 
{ 
    weight = w; 
} 
-(void) setAge:(int) a 
{ 
    age = a; 
} 
-(int) getName 
{ 
    return name; 
} 
-(int) getAge 
{ 
    return age; 
} 
@end 
+0

需要rehprase這個所以它實際上聽起來像一個問題 –

+0

你的意思是像「自我」?它指的是當前的實例,但兩者的結構完全不同 – John

+0

自我給了我一個錯誤。 「本地聲明的年齡隱藏實例變量」 – gmustudent

回答

1

在Objective-C中,您可以定義自己的訪問器或使用@syntehsize爲您自動創建它們。

在你想手動定義存取的情況下,制定者的聲明如下:

- (void)setName:(NSString *)name { 

    self.name = name; 
} 

- (void)setAge:(NSInteger)age { 

    self.age = age; 
} 

對於干將,你只需將它們聲明如下:

- (NSString *)name { 

    return self.name; 
} 

- (NSInteger)age { 

    return self.age; 
} 
+0

這個NS的東西是什麼意思?作爲一個Java人,我完全不相信。 NSInteger與int的區別是什麼? – gmustudent

+0

爲什麼星號? – gmustudent

+0

NS只是可可基金會使用的前綴。星號表示你正在聲明一個指針。 Java自動處理指針。使用任何C語言,你必須自己處理。 Objective-C也不例外。基本上,任何不是基本類型的東西都需要聲明爲指針。 –

0

中的ObjectiveC指「這」是「自我」

0

的方式你有這在ObjectiveC中,因爲你正在使用C風格的變量。如果您聲明變量作爲ObjectiveC屬性,並使用正確的合成指令:在實現文件

@property (int) age; 

@synthesize age; 

然後你可以參考他們通過self.age

self.age = age; 

。這將在內部調用將自動定義的-(void)setAge:(int)age方法和-(int) age方法。

最後因爲一個對象的ObjectiveC無非是一個指針更是一種C結構,你可以通過使用語法來引用指針字段一個struct跳過的ObjectiveC訪問變量:self->age = age

+0

獲取錯誤。在我的界面我有 - (void)setAge:(int)age;然後在我的實現中,我執行了像你說的代碼,但它說本地聲明的年齡隱藏實例變量 – gmustudent

1

的ObjectiveC程序員不喜歡打字,所以我們做的是這樣的:通過閱讀蘋果的Objective-C Programming Language introduction

@interface Person : NSObject 
@property(nonatomic, copy) NSString *name; 
@property(nonatomic, assign) int age; 
@end 

@implementation Person 
@end 

你可能要開始。