目标C新手在这里:我的int main在下面。问:为什么我会收到这样一条臭名昭著的错误消息:"No生存力@ person声明选择器firstName"
.m文件包含@合成firstName,lastName;
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
#import "Person.h"
int main(int argc, char *argv[])
{
Person *ben = [[Person alloc] init];
ben.firstName=@"Ben";
NSLog(@"--->%@",ben.firstName); //output ---->Ben
[ben firstName:"Ben"]; //RED ERR: no visibility @interface for Person
}the .h
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
NSString *firstName;
NSString *lastName;
}
@property (nonatomic, copy) NSString *firstName;
@property (nonatomic, copy) NSString *lastName;
- (NSString *) fullName;
-(void) sayHello;
@endthe .m
#import "Person.h"
@implementation Person
@synthesize firstName, lastName;
-(void) sayHello
{
NSLog(@"Hello");
}
- (NSString *) fullName
{
return [NSString stringWithFormat:@"%@ %@", [self firstName], [self lastName]];
}
@end发布于 2013-05-01 19:35:44
用途:
[ben setfirstName:@"Ben"]; 因为你要把Ben设置为firstName。
希望它能帮到你。
发布于 2013-05-01 19:37:01
如果您对getter和setter ([foo something]和[foo setSomething:@"value"])使用括号语法,则自动创建(或:合成)设置器从set开始。因此,在您的情况下,您必须做:[ben setFirstName:@"ben"]
另一种方法是为getter和setter (foo.something和foo.something = @"value")使用点语法,而不必使用set前缀。在这种情况下,您可以执行ben.firstName = @"ben"
发布于 2013-05-01 19:37:39
在objective中,如果您有一个名为firstName的属性,您可以通过两种方式获得/设置它。
到达
NSString *firstName = obj.firstName;
NSString *firstName = [obj firstName];设置
obj.firstName = @"First Name";
[obj setFirstName:@"First Name"];https://stackoverflow.com/questions/16325049
复制相似问题