2016-02-10 76 views
1

我想讓所有我的代碼函數「public」使下列對象可訪問。由alloc創建的訪問對象init

SomeObj *myobject = [[SomeObj alloc]init]; 

請注意,我已經初始化內通過下面的代碼接口的對象,但我沒有作用

Someobj *myobj; 

但是當我使用的alloc初始化,它的工作很好,但我不知道如何從另一個功能,如

- void runcar() { 
     Cars *mycar = [[Cars alloc]init]; 
     [mycar run]; 
} 

我的問題如何我可以停止從另一個功能的汽車?

+0

[Objective-C - 類實例在哪裏聲明?]可能的重複(http://stackoverflow.com/questions/35188058/objective-c-where-are-class-instances-declared) – Hamish

回答

-1

定義它在你的界面:

@interface Cars() 
@property Cars *mycar; 
@end 

然後在你的初始化函數初始化:

@implementation Cars 

- (instancetype)init 
{ 
    if ((self = [super init])) { 
     _mycar = [[Cars alloc]init]; 
    } 
    return self; 
} 

@end 

現在您可以在類中使用_mycar無處不在。如果要公開使用它,請在頭文件中定義它。

+0

你好,謝謝你,你能告訴我什麼是(實例類型),它的變量名或方法名嗎? – qamooos

+0

嗯,它是你創建的實例的類型 - 現代目標c:https://developer.apple.com/library/ios/releasenotes/ObjectiveC/ModernizationObjC/AdoptingModernObjective-C/AdoptingModernObjective-C.html –

+1

「現在你可以在你的類的所有地方訪問'_mycar' ** - 如果你想要一個實例變量,你應該聲明一個實例變量,如果你想要一個屬性,你應該聲明一個並將其作爲'self.mycar'訪問,這樣getter&setter是使用和KVO工作,聲明一個屬性,但使用它作爲一個實例變量不是一個好的選擇。 – CRD

相關問題