2010-06-29 63 views
0

從我所經歷的情況看,好像對象不能在目標c中共享數據成員。我知道你可以初始化一個指針,並在每個方法中分配對象,但我似乎無法弄清楚如何可以說定義一個NSMutableString作爲數據成員,並允許所有的方法使用和修改其數據在c + +中。這是真的還是我錯過了什麼?作爲目標C中的數據成員的對象目標C中的數據成員

+0

您是否爲您的NSMutableString提供了存取方法,或者將其聲明爲屬性? – dreamlax 2010-06-29 03:05:13

+1

嘿,這是每個人學習新語言時遇到的盲點之一。你被困在你自己的語言形式中,你看不到一些簡單而明顯的東西。你會踢自己。 ;-) – TechZen 2010-06-29 03:42:59

回答

1

這聽起來像你想合成(創建getter/setter方法)成員變量的屬性。我剛剛發現this cheat sheet,請進入名爲「屬性」的部分,以便快速查看。

除此之外Apple's documentation應該會給你更多的信息。

+0

感謝這正是我正在尋找的這兩條線,讓我從極度的悲傷中解脫出來: [totalAmount autorelease]; totalAmount = [輸入保留]; 我沒有意識到iPhone沒有自動垃圾收集。 – jcb344 2010-06-29 16:53:52

3

要定義一個實例變量(成員),編輯您的.h文件:

@interface MyClass : NSObject { 
    // ivars go here 
    NSObject *member; 
} 
// methods go here 
@end 

然後,在你的.m文件,從任何實例方法(其中一個與-開始),你可以訪問此變量。

- (void)doThingWithIvar { 
    [member doThing]; 
} 

如果你想從訪問外對象本身的變量,你需要存取。你可以用的OBJ-C性能很容易做到這一點:

@interface MyClass : NSObject { 
    // ivars go here 
    NSObject *member; 
} 
// methods go here 
@property (nonatomic, retain) NSObject *member; 
@end 

而在.m

@implementation MyClass 
@synthesize member; 
// ... 
@end 

@synthesize行創建伊娃getter/setter方法。然後你可以使用屬性語法:

MyClass *thing = ...; 
NSLog(@"%@", thing.member); // getting 
thing.member = obj; // setting 

(請注意,我指定(retain)@property;如果你的成員不是一個Objective-C的對象,你不想說如果你的財產的類有一個可變的。相反,您需要改爲(copy)。)