我試圖設置iPhone的Web服務URL 在登錄視圖中邏輯應該是: - 是否已設置服務URL?如果是的話,使用保存的默認值,如果沒有提示。目標C - 在類實現中使用非靜態方法
webServiceCall.h
@property (nonatomic,weak) NSString *webServiceUrlStr;
// getter and setter for webServiceUrlStr
- (NSString *) webServiceUrlStr;
- (void) setwebServiceUrlStr: (NSMutableString *) theUrl;
webServiceCall.m
- (NSString *) webServiceUrlStr
{
return _webServiceUrlStr;
}
- (void) setwebServiceUrlStr: (NSMutableString *) theUrl
{
_webServiceUrlStr = theUrl;
NSLog(@"Setting webServiceUrlStr = %@",_webServiceUrlStr);
}
在我loginviewcontroller我稱之爲:
if([self.webServiceCall webServiceUrlStr] != nil)
{
....set view stuff here
}
其工作正常。 現在我已經從我的觀點設定的URL我想用它在WebServiceCall類
webServiceCall.m
//Basic method for calling a webservice with soap
+ (NSData *) callWebMethodWithSoapAction:(NSString*) soapAction withSoapEnvelop: (NSString *) soapEnvelop
{
NSString *wsURL = [self webServiceUrlStr]; <-- No Known class for selector 'webServiceUrlStr'
NSURL *webserviceUrl = [NSURL URLWithString:wsURL];
....etc
使webServiceURLStr靜態解決了上述錯誤,但然後讓未知的方法來我loginviewcontroller
爲什麼'callWebMethodWithSoapAction:withSoapEnvelop:'靜態?使其成爲實例功能。 – mostruash 2014-09-05 10:47:51
當你在Objective-C中聲明一個屬性時,你的getter和setter將被自動合成/生成。除非您想添加其他行爲,例如除了設置/獲取變量到getter/setter之外,你不需要自己實現它們。因此,您可以從WebServiceCall.m中刪除webServiceUrlStr和setwebServiceUrlStr的定義: – mmccomb 2014-09-05 10:49:39
您不能在'Class'方法中使用'Instance'方法/變量。你需要創建Class的實例並調用你的方法。更好的選項是創建類「webServiceCall」的'SharedInstance'並用它來訪問'Class'方法中的變量或方法。 – 2014-09-05 10:50:51