我正在尝试为iPhone设置网络服务网址 逻辑应该是: 在登录视图 - 已设置服务URL? ,如果是这样,使用保存的默认值,如果没有提示。
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不知道该方法
答案 0 :(得分:0)
当方法不需要任何对象状态时,在对象上定义的静态方法。 callWebMethodWithSoapAction:withSoapEnvelop:
绝对需要对象状态 - webServiceUrlStr
,所以它不应该是静态的。如果只需要一个webServiceCall
个对象 - 使用单线模式或仅使用此字符串值的全局变量
答案 1 :(得分:0)
感谢您的回复......通过以下方式解决了这个问题
WebServiceCall.m,我声明了一个静态var
static NSString *webServiceUrlStr
: 然后将getter和setter更改为static并引用新变量
+ (NSString *) webServiceUrlStr
{
return webServiceUrlStr;
}
+ (void) setwebServiceUrlStr: (NSMutableString *) theUrl
{
webServiceUrlStr = theUrl;
NSLog(@"Setting webServiceUrlStr = %@",_webServiceUrlStr);
}
在我的loginViewController类中:
// static ref
if([WebServiceCall webServiceUrlStr] != nil)
{
....set view stuff here
}