这是一个奇怪的错误。
我在标题中有这个
#import "UIKit/UIKit.h"
@interface ProxyProfileObject : NSObject <NSCoding> {
NSString *profileName;
NSString *ipAddress;
NSString *port;
}
-(void) setProfileName:(NSString *)string;
-(NSString*) getProfileName;
-(void) setIP:(NSString *)string;
-(NSString*) getIP;
-(void) setPort:(NSString *)string;
-(NSString*) getPort;
@end
这在实现中:
#import "ProxyProfileObject.h"
@interface ProxyProfileObject()
@end
@implementation ProxyProfileObject
-(void) setProfileName:(NSString *)string{
profileName = string;
}
-(NSString*) getProfileName{
return profileName;
}
-(void) setIP:(NSString *)string{
ipAddress = string;
}
-(NSString*) getIP{
return ipAddress;
}
-(void) setPort:(NSString *)string{
port = string;
}
-(NSString*) getPort{
return port;
}
// Encoding stuff
- (id)initWithCoder:(NSCoder *)decoder {
if (self = [super init]) {
self.profileName = [decoder decodeObjectForKey:@"profileName"];
self.port = [decoder decodeObjectForKey:@"port"];
self.ipAddress = [decoder decodeObjectForKey:@"ip"];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)encoder {
[encoder encodeObject:profileName forKey:@"profileName"];
[encoder encodeObject:ipAddress forKey:@"ip"];
[encoder encodeObject:port forKey:@"port"];
}
@end
我不确定为什么要这样做。它不应该这样做,因为ipAddress与端口或配置文件名称相同。
这是两个文件。现在,您可以亲自了解ipAddress的工作原理。
答案 0 :(得分:1)
NSString *ipAddress
中声明一个ivar。self.ipAddress
引用了一个属性。编辑后,您的问题显而易见:
您没有声明方法-(void)setIpAddress:(NSString *)address;
这就是使Xcode允许您为设置程序使用属性语法(点符号)的原因-即使它不是实际的属性。
答案 1 :(得分:1)
您是在声明实例变量,而不是属性。只需将@property
指令放在行首。
@interface ProxyProfileObject : NSObject <NSCoding> {}
@property NSString *profileName;
@property NSString *ipAddress;
@property NSString *port;
编辑:不要编写显式的getter和setter。使用@property
声明提供的(无错误)综合访问器。